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" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |