0

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

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

在设备 iPAD 上我第一次加载应用程序时,它会加载我当前的位置,并带有一个蓝点。但是红色注释没有显示在我当前的位置,而是显示在赤道地球中心的 0,0,0 和 0,0,0 处。它没有按预期进行。红色和蓝色都应该在同一点相交。有趣的一点是在这个屏幕的第二次加载(基本上我回到屏幕 A 并回到这个屏幕。让我们说地图作为屏幕 B 的屏幕)它加载了蓝色和红色点相交的地图。它不能只在第一次时做到这一点。就像它在第一次加载时无法确定位置,但之后可以做到。我怎样才能让它在第一次加载时显示?我有意义吗?如果您需要更多信息,请询问我。

4

1 回答 1

1

第一次无法做到这一点,因为您没有等待位置管理器对您的位置进行适当的修复。您需要让您对位置管理器的委托进行分类并等待didUpdateLocations回调。获得位置后,您可以使用它来设置红色图钉,然后阻止位置管理器向您发送更新,或者如果图钉已经放置,则忽略它们。

于 2012-11-29T21:53:15.227 回答