mapView 中的用户位置未显示在多个模拟器设备(MapKit)上

Posted

技术标签:

【中文标题】mapView 中的用户位置未显示在多个模拟器设备(MapKit)上【英文标题】:User location in mapView doesn't show on several simulator devices (MapKit) 【发布时间】:2015-05-26 00:28:12 【问题描述】:

我已经实现了一个 mapView,它可以找到用户位置并显示它,但问题是它在 ios 模拟器中的 iPhone 4S、iPhone 5、iPhone 5S 和 iPhone 6 Plus 上不起作用,只能在 iPhone 上运行6. 奇怪的是它可以在我真正的 iPhone 5S 设备上运行。

这可能是模拟器问题,还是会在真实设备上发生?

这是我收到的警告:

尝试在不提示位置授权的情况下启动 MapKit 位置更新。必须先调用 -[CLLocationManager requestWhenInUseAuthorization] 或 -[CLLocationManager requestAlwaysAuthorization]。

【问题讨论】:

【参考方案1】:

尝试在不提示位置授权的情况下启动 MapKit 位置更新。必须先调用 -[CLLocationManager requestWhenInUseAuthorization] 或 -[CLLocationManager requestAlwaysAuthorization]

这里最难的是什么?在您的应用明确要求授权使用用户的位置之前,您的地图视图无法显示用户的位置。错误消息甚至会向您显示方法,您必须调用其中一种方法才能做到这一点!怎么可能更有帮助?做它告诉你的事。

请注意,您不仅必须请求授权,还必须接收授权。

【讨论】:

它不要求它。它确实在真实设备上......:/ 重置模拟器。您可能已经拒绝访问 - 因此您无法再收到请求。或者切换到“设置”并在那里提供访问权限。 这里是工作代码:github.com/mattneub/Programming-iOS-Book-Examples/blob/master/… 我试过重置模拟器,但还是不行。此外,iPhone 6 甚至没有要求它,而是显示了位置:/ 在此处查看我的回答,描述您的逻辑必须是:***.com/a/30495310/341994【参考方案2】:

我最终解决了我自己的问题。

我刚刚在 viewDidLoad 中添加了这行代码:

 [self.locationManager requestWhenInUseAuthorization];

这很有帮助:http://nevan.net/2014/09/core-location-manager-changes-in-ios-8/

【讨论】:

以上是关于mapView 中的用户位置未显示在多个模拟器设备(MapKit)上的主要内容,如果未能解决你的问题,请参考以下文章

为啥使用 mapview 看不到 android 小吃吧?

获取我在 OsmDroid 中的位置不起作用

iOS Google Maps 主页位置按钮未显示

为啥 MKMapView 不显示当前位置红色图钉?

在 Swift 中的同一个 mapView 中分配多个注释 pinColors?

XIB 和模拟器/iOS 设备中元素的不同位置