Procházet zdrojové kódy

add:添加清除指定标记物

“HeShaoZe” před 4 měsíci
rodič
revize
28442509fd

+ 1 - 0
plugins/map_mapkit_ios/ios/Classes/MapView/Model/ChannelMethods.swift

@@ -22,6 +22,7 @@ enum ChannelMethods: String, CaseIterable {
     case methodUpdateOrAddMarkers = "marker#updateOrAddMarkers"
     case methodReplaceAllMarkers = "marker#replaceAllMarkers"
     case methodMarkerOnTap = "marker#onTap"
+    case methodMarkerRemoveMarker = "marker#removeMarker"
     
     // 轨迹纠偏
     case methodQueryProcessedTrace = "trace#queryProcessedTrace"

+ 6 - 1
plugins/map_mapkit_ios/ios/Classes/MapView/Model/MapProtocol.swift

@@ -41,8 +41,11 @@ protocol MapCapability {
 
     func handleMethodCall(_ call: FlutterMethodCall, result: @escaping FlutterResult)
     
-    // 处理移动至多个点的位置,并提供设置padding距离
+    ///处理移动至多个点的位置,并提供设置padding距离
     func handleMapMoveToSuitableLocation(args: [String: Any]?, result: @escaping FlutterResult)
+    
+    ///清除指定标记物
+    func handleMapRemovemarker(args: [String: Any]?, result: @escaping FlutterResult)
 }
 
 extension MapCapability {
@@ -65,6 +68,8 @@ extension MapCapability {
             handleMapAddPolyline(args: call.arguments as? [String: Any], result: result)
         case .methodMapMoveToSuitableLocation:
             handleMapMoveToSuitableLocation(args: call.arguments as? [String: Any], result: result)
+        case .methodMarkerRemoveMarker:
+            handleMapRemovemarker(args: call.arguments as? [String: Any], result: result)
         default:
             result(FlutterMethodNotImplemented)
         }

+ 2 - 1
plugins/map_mapkit_ios/ios/Classes/MapView/Model/MapViewChannelMethod.swift

@@ -12,12 +12,13 @@ enum MapViewChannelMethod: String, CaseIterable {
     case methodMapMoveCamera = "map#moveCamera"
     case methodMapAnimateCamera = "map#animateCamera" 
     case methodMapClear = "map#clear"
+    case methodMapMoveToSuitableLocation = "map#moveToSuitableLocation"
     
     // 标记物相关方法名称
     case methodUpdateOrAddMarkers = "marker#updateOrAddMarkers"
     case methodReplaceAllMarkers = "marker#replaceAllMarkers"
     case methodMarkerOnTap = "marker#onTap"
-    case methodMapMoveToSuitableLocation = "map#moveToSuitableLocation"
+    case methodMarkerRemoveMarker = "marker#removeMarker"
     
     // 轨迹纠偏
     case methodQueryProcessedTrace = "trace#queryProcessedTrace"

+ 16 - 0
plugins/map_mapkit_ios/ios/Classes/MapView/ViewModel/MapViewModel.swift

@@ -106,6 +106,22 @@ class MapViewModel: NSObject, ObservableObject, MapCapability {
         suitableLocation.append(polyline)
         result(nil);
     }
+        
+    ///清除指定标记物
+    func handleMapRemovemarker(args: [String : Any]?, result: @escaping FlutterResult) {
+        defer {
+            result(nil)
+        }
+        guard let args = args, let markerItem = ATMapMarker.fromJson(json: args) else {
+            result(paramsDecodeError)
+            return
+        }
+        
+        // 使用标识符找到要移除的标记物并从数组中删除
+        if let index = markers.firstIndex(where: { $0.id == markerItem.id }) {
+            markers.remove(at: index)
+        }
+    }
 }
 
 // Propertie Action