我正在尝试为iOS和storyboard创建虚拟地图视图演示,以便获取当前用户位置。在执行时,我必须滚动并滑动才能找到我当前的位置,但不能设置在我当前位置附近的区域。我应该实现什么才能实现这一点,例如使用MK坐标或MKMap区域?以下是我的.m实现代码。
- (void)viewDidLoad
{
[super viewDidLoad];
[_mapView setCenterCoordinate:_mapView.userLocation.location.coordinate animated:YES];
MKAnnotationView *userLocationView = [_mapView viewForAnnotation:_mapView.userLocation];
[userLocationView.superview bringSubviewToFront:userLocationView];
}
答案 0 :(得分:3)
首先让地图显示您当前的位置。
_mapView.showsUserLocation = YES; // This will show the blue dot on map at your current location.
现在设置区域以放大当前位置。
MKCoordinateRegion region;
region.center.latitude = _mapView.userLocation.coordinate.latitude;;
region.center.longitude = _mapView.userLocation.coordinate.longitude;;
region.span.latitudeDelta = 0.001;
region.span.longitudeDelta = 0.001;
MKCoordinateRegion scaledRegion = [_mapView regionThatFits:region];
[_mapView setRegion:scaledRegion animated:NO];
确保在您的位置在地图上可见之后设置区域,或者您的地图已完全加载。你可以利用代表......
- (void)mapViewWillStartLoadingMap:(MKMapView *)mapView;
- (void)mapViewDidFinishLoadingMap:(MKMapView *)mapView;
如果您想通过userself管理UserLocation .. 您可以使用CLLocationManager类初始化它并使用它的委托来获取用户当前位置的更新。
CLLocationManager *locationManager = [[CLLocationManager alloc]init];
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.pausesLocationUpdatesAutomatically = NO;
[locationManager setDelegate:self];
//委派
- (void) locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
// Use New Location to show your custom marker or do any thing you want.
}
对于模拟器中的调试,您可以设置GPS位置 转到模拟器选项 DEBUG - > LOCATION ..您可以添加自定义位置或从可用位置中进行选择。
希望这会对你有所帮助。 :)