在Google上使用Flutter获取Geopoints和设置标记

问题描述 投票:0回答:1

我正在尝试在Google地图中设置标记。我从Firestore获取数据,但地图上未显示任何标记,我使用了两种不同的地图:一种是,用户可以设置一个保存在Firestore中的位置,另一种地图应使用用户位置来检索标记。

这是详细消息:

[[VERBOSE-2:ui_dart_state.cc(157)]未处理的异常:'package:google_maps_flutter_platform_interface / src / types / location.dart':失败的断言:第19行pos 16:'latitude!= null':不正确。

有人知道我的代码中缺少什么吗?

谢谢

class MapScreen extends StatefulWidget {
  @override
  _MapScreenState createState() => _MapScreenState();
}

class _MapScreenState extends State<MapScreen> {




  Map<MarkerId, Marker> _markers = <MarkerId, Marker>{};
  Firestore firestore = Firestore.instance;
  Geoflutterfire geo = Geoflutterfire();







  LatLng _initialPosition = LatLng(60.508977, 14.950167);

  GoogleMapController mapController;



  void onMapCreated(GoogleMapController controller) async {
    setState(() {
      Location _location = Location();
      mapController = controller;
      _location.onLocationChanged.listen((l) {
        mapController.animateCamera(
          CameraUpdate.newCameraPosition(
            CameraPosition(target: LatLng(l.latitude, l.longitude), zoom: 16.0),
          ),
        );
      });
    });
  }

  initMarker(request, requestId) {
    var p = request['position'];
    var markerIdVal = requestId;
    final MarkerId markerId = MarkerId(markerIdVal);
    final Marker marker = Marker(
        markerId: markerId,
        position:
            LatLng(p['latitude'], p['longitude  ']),
        infoWindow: InfoWindow(
          title: 'name',
        ));
    setState(() {
      _markers[markerId] = marker;

    });
  }
  _populateMarks(){
    Firestore.instance.collection('users').getDocuments().then((docs){
      if(docs.documents.isNotEmpty){
        for(int i = 0; i < docs.documents.length; ++i){
          initMarker(docs.documents[i].data, docs.documents[i].documentID);
        }
      }
    });
  }
  CameraPosition _initialCamera = CameraPosition(
    target: LatLng(59.334591, 18.063240),
    zoom: 10.0000,
  );


  @override
  void initState() {
    _populateMarks();
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Stack(
        children: <Widget>[
          GoogleMap(
            markers: Set<Marker>.of(_markers.values),
            myLocationEnabled: true,
            onMapCreated: onMapCreated,
            mapType: MapType.terrain,
            myLocationButtonEnabled: true,
            initialCameraPosition: _initialCamera,

//                CameraPosition(target: _initialPosition, zoom: 6),
          ),
          FlatButton(
            color: Colors.pink,
            onPressed: () {
              print(_markers);
            },
          )
        ],
      ),
    );
  }
flutter google-cloud-firestore geolocation location
1个回答
0
投票

通过这种方式解决了。通过更改位置:LatLng ....

initMarker(request, requestId ) {
    var p = request['position'];
    var d = request['name'];
    var markerIdVal = requestId;
    final MarkerId markerId = MarkerId(markerIdVal);
    final Marker marker = Marker(
        markerId: markerId,
        position:
            LatLng(p['geopoint'].latitude,p['geopoint'].longitude),
        infoWindow: InfoWindow(
//          title: d['name']
        ));
    setState(() {
      _markers[markerId] = marker;

    });
  }
© www.soinside.com 2019 - 2024. All rights reserved.