如何使用蓝点在MKMapView上显示我当前的位置和区域?

时间:2014-05-09 08:31:06

标签: ios mkmapview

我正在尝试为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];
}

1 个答案:

答案 0 :(得分:3)

MAPKIT

首先让地图显示您当前的位置。

 _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 ..您可以添加自定义位置或从可用位置中进行选择。

希望这会对你有所帮助。 :)