mapController.addMarker( 的MarkerOptions( 职位:LatLng(37.4219999,-122.0862462), ));我在博客文章中看到过这段代码,我正在尝试向Google地图添加标记。 ……
是的,谷歌地图API已经改变,标记API是基于小部件的,不再基于控制器。
通过 CHANGELOG.md
“突破性的变化。将Marker API改为基于小部件,它是基于控制器的。同时也改变了示例应用程序。”
我从中复制了一些代码 github应用程序示例 我觉得这对你很重要
Map<MarkerId, Marker> markers = <MarkerId, Marker>{}; // CLASS MEMBER, MAP OF MARKS void _add() { var markerIdVal = MyWayToGenerateId(); final MarkerId markerId = MarkerId(markerIdVal); // creating a new MARKER final Marker marker = Marker( markerId: markerId, position: LatLng( center.latitude + sin(_markerIdCounter * pi / 6.0) / 20.0, center.longitude + cos(_markerIdCounter * pi / 6.0) / 20.0, ), infoWindow: InfoWindow(title: markerIdVal, snippet: '*'), onTap: () { _onMarkerTapped(markerId); }, ); setState(() { // adding a new marker to map markers[markerId] = marker; }); } GoogleMap( onMapCreated: _onMapCreated, initialCameraPosition: const CameraPosition( target: LatLng(-33.852, 151.211), zoom: 11.0, ), // TODO(iskakaushik): Remove this when collection literals makes it to stable. // https://github.com/flutter/flutter/issues/28312 // ignore: prefer_collection_literals markers: Set<Marker>.of(markers.values), // YOUR MARKS IN MAP )
我建议你看看示例应用程序 这里 。有新的API更新。
我想你是在打电话给 addMarker null控制器上的方法,所以你需要做的是以下内容:
addMarker
child: GoogleMap( onMapCreated: _onMapCreated, myLocationEnabled: true, initialCameraPosition: CameraPosition( target: LatLng(37.4219999, -122.0862462), ), )
然后在 _onMapCreated 你添加标记
_onMapCreated
void _onMapCreated(GoogleMapController controller) { mapController = controller; mapController.animateCamera(CameraUpdate.newCameraPosition(CameraPosition( bearing: 0.0, target: LatLng(37.4219999, -122.0862462), tilt: 0.0, zoom: 15.0, ))); mapController.addMarker( MarkerOptions( position: LatLng(37.4219999, -122.0862462), ), ); }