今天发现自己好笨。。。我一直在搞定位,想为什么是空的。原来的定位也需要代理来实现。 在初始化地图中,也就是在viewdidload中。 mapView.showsUserLocation = YES;if (mapView.userLocation.location != nil) { NSLog(@“成功定位”); coor = [[mapView.userLocation location] coordinate]; NSLog(@"%f",coor.latitude); NSLog(@"%f",coor.longitude); } BMKCoordinateRegion viewRegion = BMKCoordinateRegionMake(coor, BMKCoordinateSpanMake(0.02f,0.02f)); BMKCoordinateRegion adjustedRegion = [mapView regionThatFits:viewRegion]; [mapView setRegion:adjustedRegion animated:YES];
一直以为是这样的,因为showuserlocation设置了 拿到现在的userlocation就好了,这样做不会马上定位,它的内部实现是在子线程中定位的,
然后通过代理方法更新当前用户位置,好晕啊,仔细寻找 ,找到更新用户当前位置的代理方法 1. - (void)mapView:(BMKMapView *)mapView didUpdateUserLocation:(BMKUserLocation *)userLocation;
那就去实现吧,这个时候应该是定位到用户的位置,也就是这个userlocation 1. mark mapViewDelegate 代理方法 2. - (void)mapView:(BMKMapView *)mapview1 didUpdateUserLocation:(BMKUserLocation *)userLocation 3. { 4. BMKCoordinateRegion region; 5. region.center.latitude = userLocation.location.coordinate.latitude; 6. region.center.longitude = userLocation.location.coordinate.longitude; 7. region.span.latitudeDelta = 0.2; 8. region.span.longitudeDelta = 0.2; 9. if (mapView) 10. { 11. mapView.region = region; 12. NSLog(@”目前的坐标是: %f,%f",userLocation.location.coordinate.latitude,userLocation.location.coordinate.longitude); 13. } 14. } 总结
必须实现定位
1.初始化mapviewwie
2.设置mapview的showuserlocation属性为YESS
3.实现didupdaterlocation代理,实现当前位置显示
小知识的积累,一定是大财富的源泉。虚心学习,每天进步一点。