问题 MKMapView userLocation在模拟器中显示0,0?


我的视图(MKMapViewDelegate)上有一个mapView插座,启用了“显示用户位置”。

在我的控制器的viewdidload中

CLLocation *userLoc = mapView.userLocation.location;
CLLocationCoordinate2D userCoordinate = userLoc.coordinate;
NSLog(@"user latitude = %f",userCoordinate.latitude);
NSLog(@"user longitude = %f",userCoordinate.longitude); 
mapView.delegate=self;

模拟器在地图上显示正确的用户位置(我在IOS模拟器中使用自定义位置)

但NSLog显示纬度和经度为0和0。

我不应该在模拟器中获得自定义经度和纬度吗?

更新与答案:

需要实施

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
    self.mapView.centerCoordinate = userLocation.location.coordinate;
} 

2936
2018-03-08 14:21


起源



答案:


定位服务不是即时的。你的代码在 viewDidLoad,所以它还没有机会修复你的位置。你应该设置 delegate 用于实现地图的对象的地图视图的属性 MKMapViewDelegate 协议。


13
2018-03-08 14:28



你能提供一些示例代码吗?我确实在上面的代码中将mapview委托设置为self?我希望地图初始缩放位置基于用户的当前位置 - sayguh
你有没有实现任何一个 MKMapViewDelegate 方法?除非您实现它定义的方法,否则设置委托不会做任何事情。开发人员中心有几个地图示例项目。你看过他们了吗? - Jim
无法在Apple网站上找到此示例代码。很想找到一个这样做的示例项目 - sayguh
你需要实施 didUpdateUserLocation。本网站以及Apple网站上应该有很多例子。
iOS开发中心主页上有一个“示例代码”链接。如果单击它,它会为您提供Apple所有示例代码的列表。有一个搜索框,如果你在其中放置“map”,它会为你提供八个使用MapKit的示例项目。 - Jim


答案:


定位服务不是即时的。你的代码在 viewDidLoad,所以它还没有机会修复你的位置。你应该设置 delegate 用于实现地图的对象的地图视图的属性 MKMapViewDelegate 协议。


13
2018-03-08 14:28



你能提供一些示例代码吗?我确实在上面的代码中将mapview委托设置为self?我希望地图初始缩放位置基于用户的当前位置 - sayguh
你有没有实现任何一个 MKMapViewDelegate 方法?除非您实现它定义的方法,否则设置委托不会做任何事情。开发人员中心有几个地图示例项目。你看过他们了吗? - Jim
无法在Apple网站上找到此示例代码。很想找到一个这样做的示例项目 - sayguh
你需要实施 didUpdateUserLocation。本网站以及Apple网站上应该有很多例子。
iOS开发中心主页上有一个“示例代码”链接。如果单击它,它会为您提供Apple所有示例代码的列表。有一个搜索框,如果你在其中放置“map”,它会为你提供八个使用MapKit的示例项目。 - Jim


我必须通过Debug> Location在模拟器中设置一个位置。它被设置为无,它将我倾倒在(0°,0°)并且从未更新过;您可以设置自定义位置,也可以选择随时间自动移动用户位置的其他模拟位置脚本。


1
2018-04-16 05:22





MKMapView *mapview=[[MKMapView alloc]initWithFrame:CGRectMake(0,0,300, 364)];
mapview.delegate=self;
mapview.showsUserLocation=YES;

然后将调用mapkit委托,在mak工具包委托中尝试打印坐标。 NSLog(@“user latitude =%f”,userLocation.location.coordinate.latitude); NSLog(@“user longitude =%f”,userLocation.location.coordinate.longitude);


0
2017-09-28 15:01