ios – 从mapView中删除polyLine

前端之家收集整理的这篇文章主要介绍了ios – 从mapView中删除polyLine前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我读了很多关于它的帖子,但我仍有问题.
这是我在两点之间绘制polyLine的代码
-(void) drawAline:(CLLocation*)newLocation
{
//drawing a line
CLLocationCoordinate2D 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相关文章