加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift:只删除一个MKPolyline

发布时间:2020-12-14 04:33:59 所属栏目:百科 来源:网络整理
导读:我在地图上有两条折线: var polylineRoute : MKGeodesicPolyline! var polylineFlight : MKGeodesicPolyline! 我为每个人分配了一个标题,并将它们添加到地图中(使用不同的方法): let polyline = MKGeodesicPolyline(coordinates: routeCoordinates,count:
我在地图上有两条折线:

var polylineRoute : MKGeodesicPolyline!  
var polylineFlight : MKGeodesicPolyline!

我为每个人分配了一个标题,并将它们添加到地图中(使用不同的方法):

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"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读