Ios 从mapView中删除用户位置注释
我必须删除添加到MKMapView的所有注释,但执行时:Ios 从mapView中删除用户位置注释,ios,iphone,mkmapview,mkuserlocation,Ios,Iphone,Mkmapview,Mkuserlocation,我必须删除添加到MKMapView的所有注释,但执行时: NSMutableArray *annotationsToRemove = [[NSMutableArray alloc] initWithArray: mapView.annotations]; [mapView removeAnnotations: annotationsToRemove]; 数组annotationsToRemove包含一个MKUserLocation注释,它不会删除它 有没有办法重置地图?我需要删除它的所有注释
NSMutableArray *annotationsToRemove = [[NSMutableArray alloc] initWithArray: mapView.annotations];
[mapView removeAnnotations: annotationsToRemove];
数组annotationsToRemove包含一个MKUserLocation
注释,它不会删除它
有没有办法重置地图?我需要删除它的所有注释 您只需将mapView的属性设置为“否”
mapView.showsUserLocation = NO;
只需将mapView的属性设置为“否”
mapView.showsUserLocation = NO;
实际上,您不能编辑
MKUserLocation
注释。我的意思是,您不能将其从地图批注的数组中删除,因为它是MKMapView
的只读属性
如果您访问MKMapView.h
class。您将在下面的行中找到
@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
数组中删除
这是我遵循的简单方法。然而,我不确定是否还有其他方法可以做到这一点。如果您找到任何其他解决方案,请留下评论。实际上您无法编辑MKUserLocation
注释。我的意思是,您不能将其从地图批注的数组中删除,因为它是MKMapView
的只读属性
如果您访问MKMapView.h
class。您将在下面的行中找到
@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
数组中删除
这是我遵循的简单方法。然而,我不确定是否还有其他方法可以做到这一点。如果您发现任何其他解决方案,请留下评论。在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;
}
}
在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;
}
}
但是我只想删除用户位置的注释,而不是排除它!但是我只想删除用户位置的注释,而不是排除它!绝对不是解决办法。它删除了我在地图上的位置。如何仅删除我位置上的批注???如何禁用点击蓝点???绝对不是解决方案。它删除了我在地图上的位置。如何仅删除我位置上的批注???如何禁用点击蓝点???