MKMapView 无法按位置设置中心
Posted
技术标签:
【中文标题】MKMapView 无法按位置设置中心【英文标题】:MKMapView Cannot Set Center By Location 【发布时间】:2013-03-22 08:11:23 【问题描述】:我想在 MKMapView 上获取当前位置并动画到这个坐标。我得到了当前位置,但我没有在 MKMapView 上对这个位置进行动画处理。如何用蓝点动画到当前位置?
- (void)viewDidLoad
[super viewDidLoad];
locationManager = [[CLLocationManager alloc] init];
self.mapView.delegate = self;
[self.mapView setShowsUserLocation:YES];
locationManager.delegate=self;
locationManager.desiredAccuracy=kCLLocationAccuracyBest;
locationManager.distanceFilter=kCLDistanceFilterNone;
[locationManager startUpdatingLocation];
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
location = [locationManager location];
CLLocationCoordinate2D coord;
coord.longitude = location.coordinate.longitude;
coord.latitude = location.coordinate.latitude;
lat = coord.latitude;
longt = coord.longitude;
[self.mapView setCenterCoordinate:coord animated:TRUE];
- (void)mapView:(MKMapView *)mv didAddAnnotationViews:(NSArray *)views
MKAnnotationView *annotationView = [views objectAtIndex:0];
id<MKAnnotation> mp = [annotationView annotation];
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance([mp coordinate] ,250,250);
[mv setRegion:region animated:YES];
【问题讨论】:
你想根据用户当前的位置来设置地图视图中心.M i 对吗? 是的,我想根据用户当前位置设置地图视图中心 【参考方案1】:self.mapView.userTrackingMode = MKUserTrackingModeFollow
这将用一个蓝点跟随用户的位置,这似乎是你想要实现的
【讨论】:
什么也没发生。地图无法缩放到当前位置。 是否调用了您的位置委托方法?你是在设备上还是模拟器上运行? 如果你在 didUpdateLocation 方法中放置了一个断点,它会被命中吗?【参考方案2】:您必须注册 MKMapView 的 userLocation.location 属性的 KVO 通知。
为此,请将此代码放入 ViewController 的 viewDidLoad: 中或初始化地图视图的任何位置。
[self.mapView.userLocation addObserver:self forKeyPath:@"location"
options:(NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld) context:NULL];
然后实现这个方法来接收KVO通知
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
if ([self.mapView showsUserLocation])
[self moveOrZoomOrAnythingElse];
【讨论】:
它不起作用。地图仍然无法移动或缩放到用户的位置。以上是关于MKMapView 无法按位置设置中心的主要内容,如果未能解决你的问题,请参考以下文章
MKMapView setRegion 到 Annotation
userLocation 上的中心 MKMapView(最初) - 仅适用于 iPhone 4?