Если вы позволите мне, я бы предложил вам другой подход к этой проблеме.Я думаю, что в текущей версии карт Google для Flutter (0.4.0) у вас нет способа получить новую позицию после перетаскивания маркера, поэтому я решил использовать положение камеры для перемещения маркера, а затем использоватьтекущее положение камеры, чтобы получить новые координаты.Таким образом, в вашем коде вы можете сделать что-то вроде этого:
child: GoogleMap(
mapType: MapType.hybrid,
initialCameraPosition: CameraPosition(
target: LatLng(lat, lng),
zoom: 5,
),
markers: Set<Marker>.of(
<Marker>[
Marker(
draggable: true,
markerId: MarkerId("1"),
position: LatLng(lat, lng),
icon: BitmapDescriptor.defaultMarker,
infoWindow: const InfoWindow(
title: 'Usted está aquí',
),
)
],
),
onCameraMove: ((_position) => _updateMarker(_position)),
onMapCreated: (GoogleMapController controller) {
mapController = controller;
},
))
Затем вы можете устанавливать новое состояние вашего маркера каждый раз, когда пользователь перемещает камеру, и использовать эти координаты для любых других целей:
void _updatePosition(CameraPosition _position) {
Position newMarkerPosition = Position(
latitude: _position.target.latitude,
longitude: _position.target.longitude);
Marker marker = markers["1"];
setState(() {
markers["1"] = marker.copyWith(
positionParam: LatLng(newMarkerPosition.latitude, newMarkerPosition.longitude));
});
}
Надеюсь, это поможет!