
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"总结
以上是内存溢出为你收集整理的Swift:只删除一个MKPolyline全部内容,希望文章能够帮你解决Swift:只删除一个MKPolyline所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)