Swift:仅删除多个 MKPolyline

标签 swift mapkit overlay mkpolyline

我在 map 上有两条折线:

var polylineRoute : MKGeodesicPolyline!  
var polylineFlight : MKGeodesicPolyline! 

我为它们每个分配了一个标题,并像这样(以不同的方法)将它们添加到 map 中:

let polyline = MKGeodesicPolyline(coordinates: &routeCoordinates, count: routeCoordinates.count)  
polyline.title = "route"  
self.mapView.addOverlay(polyline)  
self.polylineRoute = polyline 

let polyline = MKGeodesicPolyline(coordinates: &routeCoordinates, count: routeCoordinates.count)  
polyline.title = "flight"  
self.mapView.addOverlay(polyline)  
self.polylineFlight = polyline  

现在,当触发特定操作时,我只想删除航类叠加层并保持路线叠加层不变。

这根本不起作用:

func removeFlightPath()  
    {  
        self.mapView.removeOverlay(self.polylineFlight)  
        self.polylineFlight = nil  
    }  

以下有效但删除了两条折线:

func removeFlightPath()  
{  
        var overlays = mapView.overlays  
        mapView.removeOverlays(overlays)  
}  

有没有一种方法可以只删除一条多段线?我搜索了论坛,只有一个回复说可以使用标题。但是,它没有具体说明如何完成。

非常感谢!

编辑:

这解决了问题:

func removeFlightPath()
    {
        if self.polylineFlight != nil
        {
            // Overlays that must be removed from the map
            var overlaysToRemove = [MKOverlay]()

            // All overlays on the map
            let overlays = self.mapView.overlays

            for overlay in overlays
            {
                if overlay.title! == "flight"
                {
                    overlaysToRemove.append(overlay)
                }
            }

            self.mapView.removeOverlays(overlaysToRemove)
        }
    }

最佳答案

我认为您的源代码是正确的。可能是引用计数搞砸了。只要对象被引用,MKGeodesicPolyline 就不会被移除。在您的代码中,您使用了局部变量来创建折线对象。我在不使用局部变量的情况下进行了尝试,它正在删除多段线。

self.polylineFlight = MKGeodesicPolyline(coordinates: &routeCoordinates, count: routeCoordinates.count)  
self.polylineFlight.title = "flight"  

关于Swift:仅删除多个 MKPolyline,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35566486/

相关文章:

xcode - 如何在 Xcode 6.3.1 中模拟 'moving' 位置

ios - 是否可以强制 MapKit 在不聚类的情况下显示所有注释?

ios - iPhone 6/6+ 上未调用 MKMapSnapshotter 'completionHandler'

ios - MapKit - 如何更改自定义注释 View 的点击 "zone"?

swiftui - ZStack 或使用 .overlay() 之间的区别

swift - 如何仅在小数点后显示特定数量的数字 Double Swift

swift - -canOpenURL : failed for URL: "about:blank" - error: "This app is not allowed to query for scheme about"

javascript - javascript 动画不透明度更改导致的不正确行为

python - 如何在 matplotlib/Python 中直接在 jpg 图像上叠加散点图?

ios - 在 for 循环中安排本地通知