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:委托方法.
非常简单的伙伴
[mapView setShowUserLocation:NO];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5286 次 |
| 最近记录: |