1

google_maps_flutter2 種類のマーカーを使用して Google マップを作成するために使用しています。あるタイプのマーカーを別のタイプにドラッグすると、ドラッグされたマーカーを削除してから機能を実行したいと考えています。私はこれを行うことができます。

ただし、ドラッグしたマーカーが間違った位置にドロップされた場合は、マーカーを元の位置に戻したいと考えています。これを達成するためのイベントやメソッドが見つかりませんでした。これはどのように行うことができますか?

マーカーを追加するための私のコードは次のとおりです。

markers.add(
  Marker(
    markerId: packageMarkerId,
    draggable: true,
    icon: _unassignedOrderMarkerIcon,
    onTap: () {
      print('marker tapped');
    },
    position: LatLng(coordinates.latitude, coordinates.longitude),
    onDragEnd: (LatLng latLng) {
      double newLat =
        double.parse(latLng.latitude.toStringAsFixed(1));
      double newLong =
        double.parse(latLng.longitude.toStringAsFixed(1));
      for (var user in usersDocuments) {
        Map<String, dynamic> userLocation =
          user.data['user_location'];
      if (userLocation != null) {
        if (newLat == userLocation['latitude'] &&
              newLong == userLocation['longitude']) {
           print('Equal coords: $latLng');
           markers.removeWhere((element) {
             print('Marker removed!');
             return element.markerId == packageMarkerId;
           });
           setState(() {
             _markers = markers;
           });
           return;
        } else {
           print('Unequal coords, not merged!');
           print(userLocation['latitude']);
           print(userLocation['longitude']);
           return;
         }
       }
      }
    },
  ),
);
4

0 に答える 0