ios – 从mapView中删除polyLine

ios – 从mapView中删除polyLine,第1张

概述我读了很多关于它的帖子,但我仍有问题. 这是我在两点之间绘制polyLine的代码: -(void) drawAline:(CLLocation*)newLocation{//drawing a lineCLLocationCoordinate2D coordinateArray[2];coordinateArray[0] = CLLocationCoordinate2DMake(newL 我读了很多关于它的帖子,但我仍有问题.
这是我在两点之间绘制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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1098334.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存