【问题标题】:Remove user location annotation from mapView从 mapView 中删除用户位置注释
【发布时间】:2015-01-13 11:33:56
【问题描述】:

我必须删除添加到我的 MKMapView 中的所有注释,但是当我执行时:

NSMutableArray *annotationsToRemove = [[NSMutableArray alloc] initWithArray: mapView.annotations];
[mapView removeAnnotations: annotationsToRemove];

数组 annotationsToRemove 包含一个 MKUserLocation 注释,它不会删除它。

有没有办法重置地图?我需要删除其中的所有注释!

【问题讨论】:

标签: ios iphone mkmapview mkuserlocation


【解决方案1】:

您可以将 mapView 的 showsUserLocation 属性设置为 NO。

 mapView.showsUserLocation = NO;

【讨论】:

  • 绝对不是解决方案。它删除了我在地图上的位置。如何仅删除我位置上的注释???如何禁用对蓝点的点击???
【解决方案2】:

在h插入

@property (weak)   MKAnnotationView *ulv;

在m插入

 - (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated {

        MKZoomScale currentZoomScale = mapView.bounds.size.width / mapView.visibleMapRect.size.width;
        NSLog(@"current zoom scale is %f",currentZoomScale);

        ulv = [mapView viewForAnnotation:mapView.userLocation];
                if( currentZoomScale > 0.049 ){
                    ulv.hidden = YES;
                }else{
                    ulv.hidden = NO;
                }

    }

【讨论】:

    【解决方案3】:

    实际上你不能编辑MKUserLocation注解。我的意思是你不能从地图注释的数组中删除它,因为它是MKMapViewread-only 属性。

    如果您访问MKMapView.h 类。你会发现下面一行

    @property (nonatomic, readonly) MKUserLocation *userLocation;
    

    这里我们可以看到这个属性是只读的。所以我们不能从MKMapView annotations 数组中删除它。无论您如何在使用其他注释进行计算时遇到困难,您都可以在运行时隐藏它。

    我要解释的是,当不再需要用户位置时,您可以为用户位置属性设置NO

    例如你的代码:

    NSMutableArray *annotationsToRemove = [[NSMutableArray alloc] initWithArray: mapView.annotations];
    [mapView removeAnnotations: annotationsToRemove];
    
    [self.mapView setShowsUserLocation:NO];
    NSLog(@"MapView annotations :%@", mapView.annotations);
    

    检查NSLog 输出,您会看到MKUserLocation 注释已从mapView.annotations 数组中删除。

    这是我遵循的简单方法。我不确定是否有其他方法可以做到这一点。如果您发现任何其他解决方案,请发表评论。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-07
      • 1970-01-01
      • 1970-01-01
      • 2012-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多