我有一个在运行时创建的 mkmapview。首先我必须告诉你,我的实际问题是在 ipad 上,而不是在模拟器上。在 View 上确实加载了我正在调用两个函数。 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];
在模拟器上: 记录坐标和 fillTextfields 并设置 map 上的可拖动点。 setDraggablePinOnMap 方法创建 map 并设置红色注释。因此,当应用程序在模拟器上加载时,它会在我的位置周围显示蓝点,并在同一位置显示红色图钉(按预期工作)。我移动图钉并获取该位置的坐标并更新文本字段。
在设备-iPAD 上 我第一次加载应用程序时,它会加载我当前的位置并带有一个蓝点。但是红色注释没有显示在我当前的位置,而是显示在赤道地球中心的 0,0,0 和 0,0,0 处。它没有按照预期进行。红色和蓝色应该相交在同一点。有趣的一点是第二次加载此屏幕(基本上我回到屏幕 A 并返回到此屏幕。假设 map 显示为屏幕 B 的屏幕),它会加载蓝色和红色点相交的 map 。它只能在第一次时才能做到这一点。这就好像它在第一次加载时无法找出位置,但之后可以做到。我怎样才能让它在第一次加载时显示?我说得有道理吗?请询问我是否需要更多信息。
最佳答案
第一次无法执行此操作,因为您尚未等待位置管理器正确修复您的位置。您需要对位置管理器的 delegate 进行分类并等待 didUpdateLocations
回调。获得位置后,您可以使用它来设置红色图钉,然后阻止位置管理器向您发送更新,或者如果已经放置了图钉,则忽略它们。
关于ios - MapView 注释在应用程序启动时未指向正确的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13634851/