在我扑扑的应用程序中。我正在使用google_maps_plugin。链接为https://github.com/flutter/plugins/tree/master/packages/google_maps_flutter。我想在拖动地图后将标记固定在地图中心而不移动。我想要它像http://jsfiddle.net/UuDA6/ 在我的代码中我正在使用它MarkerOption来放置标记。
google_maps_plugin
MarkerOption
MarkerOptions options = new MarkerOptions( alpha: 1.0, anchor: Offset(0.5, 1.0), consumeTapEvents: false, draggable: false, flat: false, icon: BitmapDescriptor.defaultMarker, infoWindowAnchor: Offset(0.5, 0.0), infoWindowText: InfoWindowText.noText, position: LatLng(17.411439, 78.5486697), rotation: 0.0, visible: true, zIndex: 0.0, );
但在position我想知道如何给地图的中心。
position
如果有任何想法,请分享。
实际上,通过google_maps_flutter的新更新:^ 0.4.0,我们可以轻松实现上述要求。
这是演示链接。
Map<MarkerId, Marker> _markers = <MarkerId, Marker>{}; int _markerIdCounter = 0; Completer<GoogleMapController> _mapController = Completer(); Container( width: MediaQuery.of(context).size.width, height: MediaQuery.of(context).size.height, child: GoogleMap( markers: Set<Marker>.of(_markers.values), onMapCreated: _onMapCreated, initialCameraPosition: CameraPosition( target: Constants.LOCATION_SRI_LANKA, zoom: 12.0, ), myLocationEnabled: true, onCameraMove: (CameraPosition position) { if(_markers.length > 0) { MarkerId markerId = MarkerId(_markerIdVal()); Marker marker = _markers[markerId]; Marker updatedMarker = marker.copyWith( positionParam: position.target, ); setState(() { _markers[markerId] = updatedMarker; }); } }, ), ) void _onMapCreated(GoogleMapController controller) async { _mapController.complete(controller); if ([INITIAL_LOCATION] != null) { MarkerId markerId = MarkerId(_markerIdVal()); LatLng position = [INITIAL_LOCATION]; Marker marker = Marker( markerId: markerId, position: position, draggable: false, ); setState(() { _markers[markerId] = marker; }); Future.delayed(Duration(seconds: 1), () async { GoogleMapController controller = await _mapController.future; controller.animateCamera( CameraUpdate.newCameraPosition( CameraPosition( target: position, zoom: 17.0, ), ), ); }); } } String _markerIdVal({bool increment = false}) { String val = 'marker_id_$_markerIdCounter'; if (increment) _markerIdCounter++; return val; }