如何隐藏MKMapView上的蓝点和圆圈

Rod*_*igo 4 cocoa-touch mkmapview mkannotation ios

有没有一种简单的方法来隐藏它?我使用用户位置,但我不想显示蓝点.我怎么能隐藏它?

- 编辑 -

我用错了什么?

@interface ALMapaViewController : UIViewController <MKMapViewDelegate,
                                                    MKAnnotation>
{
    IBOutlet MKMapView *mapaPrincipal;
    id<ALMapaViewControllerDelegate> delegateMap;
    CLLocationCoordinate2D coordinate; 
}
Run Code Online (Sandbox Code Playgroud)

我的.m

@implementation ALMapaViewController

- (void)viewDidLoad{

    [super viewDidLoad];
    [mapaPrincipal setMapType:MKMapTypeStandard];
    [mapaPrincipal setZoomEnabled:YES];
    [mapaPrincipal setScrollEnabled:YES];

    [mapaPrincipal.userLocation addObserver:self 
                                forKeyPath:@"location" 
                                   options:(NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld) 
                                   context:nil];
    [mapaPrincipal setShowsUserLocation:YES]; 
}


-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {      
    MKCoordinateRegion region;
    region.center = mapaPrincipal.userLocation.coordinate;  
    MKCoordinateSpan span; 
    span.latitudeDelta  = 0.005f; 
    span.longitudeDelta = 0.005f; 
    region.span = span;
    [mapaPrincipal setRegion:region animated:YES];
    self.coordinate = region.center; 
    [mapaPrincipal addAnnotation:self];
    [mapaPrincipal setShowsUserLocation:NO];
}
@end
Run Code Online (Sandbox Code Playgroud)

我已经使用了showUserLocation它,它仍然显示蓝点.

小智 7

您希望接收用户位置更新,但不显示蓝点.

一种选择是使用CLLocationManager获取更新而不是地图视图showsUserLocation.调用startUpdatingLocation位置管理器并实现其locationManager:didUpdateToLocation:fromLocation:委托方法.

如果您不想使用CLLocationManager,另一个选项是通过在地图视图的委托方法中将其hidden属性设置为隐藏地图视图创建的用户位置视图.地图视图将继续获得用户位置更新(因为你没有设置到),但蓝点不会出现,因为你隐藏其观点.YESdidAddAnnotationViewsshowsUserLocationNO

此答案中显示了第二个选项的示例:
当MKMapView showsUserLocation == YES时隐藏MKUserLocation


一个不相关的点是,您不需要使用键值观察来监视对地图视图userLocation属性的更改.请改用mapView:didUpdateUserLocation:委托方法.


Rah*_*yas 6

非常简单的伙伴

[mapView setShowUserLocation:NO];
Run Code Online (Sandbox Code Playgroud)

  • 这就是问题。好的,如果我设置为“否”,它不会显示蓝点,但也不显示我的位置。我想知道我的位置。就像你看到的,如果我设置“是”,它会显示我的位置,但如果我在此之后设置“否”,蓝点不会消失。 (2认同)