MapView注释未指向应用启动时的正确位置

时间:2012-11-29 21:14:39

标签: ios ipad location mkmapview

我有一个在运行时创建的mkmapview。首先,我必须告诉我我的实际问题是在ipad上,而不是在模拟器上。在视图上加载我正在调用两个函数。 fillValues和setDraggable Point。

CLLocationManager *locManager = [[CLLocationManager alloc]init];
[locManager startUpdatingLocation];

CLLocationCoordinate2D currCoordinates = locManager.location.coordinate;
NSLog(@"the latitude is %f",currCoordinates.latitude);
NSLog(@"the longitude is %f",currCoordinates.longitude);
[self fillLatitudeAndLongitudeTextFields:currCoordinates.latitude longitudeValue:currCoordinates.longitude];

[self setDraggablePinOnMap:currCoordinates];

ON SIMULATOR: 记录坐标和fillTextfields并在地图上设置可拖动点.setDraggablePinOnMap方法创建地图并设置红色注释。因此,当应用程序在模拟器上加载时,它会在我的位置周围显示蓝点,并在同一位置显示红色图钉(按预期工作)。我移动引脚并获取该位置的坐标并更新文本字段。

在设备-IPAD上 我第一次加载应用程序,它加载我当前的位置有一个蓝点。但红色注释不是出现在我当前的位置,而是显示在赤道上地球中心的0,0,0和0,0,0处。它没有像预期的那样。红色和蓝色应该在同一点相交。有趣的一点是在这个屏幕的第二次加载(基本上我回到屏幕A并回到这个屏幕。让我们说地图作为屏幕B出现的屏幕)它加载地图与蓝色和红色点相交。它不能只在第一次这样做。它就像它无法弄清楚第一次加载的位置,但之后可以做到。如何让它在第一次加载时显示?我有意义吗?请问我是否需要更多信息。

1 个答案:

答案 0 :(得分:1)

第一次无法执行此操作,因为您尚未等待位置管理员对您的位置进行正确修复。您需要让您对位置管理员delegate进行分级并等待didUpdateLocations回调。获得位置后,您可以使用它来设置红色引脚,然后停止位置管理器向您发送更新,或者如果已经放置了引脚,则忽略它们。