这是我在两点之间绘制polyline的代码:
-(voID) drawAline:(CLLocation*)newLocation{//drawing a lineCLLocationCoordinate2D coordinateArray[2];coordinateArray[0] = CLLocationCoordinate2DMake(newLocation.coordinate.latitude,newLocation.coordinate.longitude);coordinateArray[1] = CLLocationCoordinate2DMake(self.jerusalem.coordinate.latitude,self.jerusalem.coordinate.longitude);self.routeline = [MKpolyline polylineWithCoordinates:coordinateArray count:2];[self.mapVIEw setVisibleMapRect:[self.routeline boundingMapRect]];[self.mapVIEw addOverlay:self.routeline];}-(MKOverlayVIEw *)mapVIEw:(MKMapVIEw *)mapVIEw vIEwForOverlay:(ID<MKOverlay>)overlay{if(overlay == self.routeline){ if(nil == self.routelineVIEw) { self.routelineVIEw = [[MKpolylineVIEw alloc] initWithpolyline:self.routeline]; self.routelineVIEw.fillcolor = [UIcolor bluecolor]; self.routelineVIEw.strokecolor = [UIcolor bluecolor]; self.routelineVIEw.linewidth = 5; } return self.routelineVIEw;}return nil;
}
多数民众赞成.
问题是删除该行.
下一个代码不起作用:
for (ID<MKOverlay> overlayToRemove in self.mapVIEw.overlays){ if ([overlayToRemove isKindOfClass:[MKpolylineVIEw class]]) { [mapVIEw removeOverlay:overlayToRemove]; }}
下一个代码既不起作用:
if (self.routeline){[self.mapVIEw removeOverlay:self.routeline]; self.routelineVIEw = nil; self.routeline = nil;}
谢谢!
解决方法 在循环遍历地图视图的叠加数组的代码中,这一行是问题所在:if ([overlayToRemove isKindOfClass:[MKpolylineVIEw class]])
地图视图的叠加数组包含类型为ID< MKOverlay>的对象. (for循环正确地声明overlayToRemove).
因此,覆盖数组包含叠加层的模型对象,而不包含视图.
MKpolylineVIEw类是MKpolyline叠加模型的视图.
所以if条件应该是:
if ([overlayToRemove isKindOfClass:[MKpolyline class]])
请注意,这样的循环将从地图中删除所有折线.如果要删除特定的折线,可以在添加时在每个折线上设置标题,然后在删除之前进行检查.
直接检查和删除self.routeline的第二段代码应该有效,只要self.routeline不是nil并且包含对当前在地图上的叠加层的有效引用.
如果地图上只有一个叠加层(一条折线),您也可以调用removeOverlays来删除地图中的所有叠加层(无论它们是什么):
[self.mapVIEw removeOverlays:self.mapVIEw.overlays];总结
以上是内存溢出为你收集整理的ios – 从mapView中删除polyLine全部内容,希望文章能够帮你解决ios – 从mapView中删除polyLine所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)