用户位置不会显示在mapView上

时间:2014-12-11 04:52:48

标签: ios iphone

我正在创建一个带有自定义注释的简单UIMapView。刚刚升级到Yosemite和Xcode 6.1.1。我已经尝试了一切以使用户位置在地图上显示但由于某种原因蓝点不会在地图上显示。我在检查器中为UIMapView选择了show user location。当我在手机上运行时,最后列出的错误显示在屏幕底部的日志窗口中。谢谢你的帮助。

我的.h文件

#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h> 
#import <CoreLocation/CoreLocation.h> 


@interface ViewController : UIViewController <MKMapViewDelegate>

@property (strong, nonatomic) IBOutlet MKMapView *mapView;

我的.m文件

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [self.mapView.delegate self];
    [self.mapView setShowsUserLocation:YES];
}

-(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
    CLLocationCoordinate2D loc = [userLocation coordinate];
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(loc, 500, 500);
    [self.mapView setRegion:region animated:YES];

}

跑步后收到的错误 501:107687]尝试在不提示位置授权的情况下启动MapKit位置更新。必须首先调用 - [CLLocationManager requestWhenInUseAuthorization]或 - [CLLocationManager requestAlwaysAuthorization]。

1 个答案:

答案 0 :(得分:0)

根据我对该问题的评论......您处于权限错误状态。 在调用更新方法之前,您无需检查用户权限...

CLAuthorizationStatus authorizationStatus= [CLLocationManager authorizationStatus];

if (authorizationStatus == kCLAuthorizationStatusAuthorized ||
    authorizationStatus == kCLAuthorizationStatusAuthorizedAlways ||
    authorizationStatus == kCLAuthorizationStatusAuthorizedWhenInUse) {

    // update location here...      

}

然后,正如@zaheer所指出的,你需要为-Info.plist

添加一个Key-Value par。

NSLocationWhenInUseUsageDescription 向用户发送关于你想要他们位置的一些信息

NSLocationAlwaysUsageDescription 关于国家安全局的一些评论

取决于您是仅在应用程序位于前台或后台时是否需要该位置...