ios - MapView 注释在应用程序启动时未指向正确的位置

标签 ios ipad location mkmapview

我有一个在运行时创建的 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/

相关文章:

服务中的 Android 位置更新

Arduino 的 iOS 虚拟按钮

ios - 是否可以通过 iDevice 闪电端口访问数据?

iOS 缺少 grant_type

ios - 具有场景委托(delegate) iOS 13 的多个 Storyboard文件

ios - 在 iPad 中从基于 Window 的应用程序转换为基于 View 的应用程序

android - 如何解决 GPS 在后台 android Pie 中自动关闭?

ios - UINavigationBar 隐藏在 statusBar 下

iphone - 自定义字体在iOS 5中不起作用

c# - 以 xamarin 形式获取设备的经纬度位置