如何在中心位置固定Google地图上标记的位置

时间:2019-10-10 19:49:16

标签: google-maps flutter

我想在Flutter http://jsfiddle.net/UuDA6/中实现这一目标,我什至获得了与此Fix google map marker in center的链接,但是由于我是Flutter的初学者,因此很难理解。

这是下面的代码,根本无法理解。请Flutter社区帮助我提供一个易于理解的解决方案。

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;
    }

0 个答案:

没有答案