userLocation:纬度/经度返回零?

时间:2010-07-05 11:05:48

标签: iphone objective-c cocoa-touch

我只是在看mapKit并决定制作一个快速按钮来显示我当前的位置,但是当我按下按钮时,我的纬度/经度始终显示为[0.000000] [0.000000]。

mapView已加载,因为我可以在按下按钮之前在模拟器上看到地图。以前我通过使用coreLocation.framework并使用CLLocationManager并以这种方式询问设备位置来完成此操作。我只是好奇为什么这种方式不能正常工作,我会通过CLLocationManager做得更好吗?

-(IBAction)findMePressed {
    MKUserLocation *myLocation = [myMapView userLocation];
    CLLocationCoordinate2D coord = [[myLocation location] coordinate];
    [myMapView setCenterCoordinate:coord animated:YES];
    NSLog(@"findMePressed ...[%f][%f]", coord.latitude, coord.longitude);
}

编辑:已添加......

-(IBAction)findMePressed {
     MKUserLocation *myLocation = [myMapView userLocation];
     CLLocationCoordinate2D coord = [[myLocation location] coordinate];
     MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(coord, 350, 350);
     [myMapView setRegion:region animated:YES];
}

-(void)viewDidLoad {
    [super viewDidLoad];
    [myMapView setShowsUserLocation:YES];
}

加里。

2 个答案:

答案 0 :(得分:1)

userLocation在地图上不可见(请参阅userLocationVisible属性)或设置myMapView属性时出现问题,并且它是nil(即未在界面构建器中连接)

答案 1 :(得分:1)

[...]因为我可以在模拟器上看到地图 [...]

在设备上测试它。默认情况下,在模拟器上,您获得的坐标是Apple的总部。参看doc

有关变通方法和有用的实用程序,请参阅此另外的问题:Testing CoreLocation on iPhone Simulator