1

我正在使用google_maps_flutter创建具有两种类型标记的 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