【问题标题】:showsUserLocation with Location Services disabled显示禁用位置服务的用户位置
【发布时间】:2010-11-13 03:00:40
【问题描述】:

我的应用程序中有一个 MKMapView,并且有一个按钮可以打开地图的显示用户位置,而地图正在寻找我显示微调器的位置,以便用户知道它的工作。我知道何时通过将 NSKeyValueObserver 添加到地图的 userLocation 属性来停止微调器。但是,如果用户禁用了位置服务,那么微调器只会一直运行但什么也没有发生,有没有办法知道在使用 MKMapView 时位置服务何时被禁用?

【问题讨论】:

    标签: iphone cocoa cocoa-touch core-location


    【解决方案1】:

    使用 locationServicesEnabled,一个 CLLocationManager 的布尔属性。

    MapKit 对自动显示用户位置的支持很差。我正在编写的应用程序显示用户的位置,但我直接使用 CLLocationManager 并将自己的注释添加到地图中。

    【讨论】:

    • 谢谢,不知何故错过了该属性。无论如何要知道用户何时收到要求他们重新启用位置服务的提示?地图应用执行此操作的方式是专门显示微调器,直到用户在该对话框中选择“否”。
    • 您可以查明您何时被拒绝访问,也可以查明您何时被授予访问权限。在我的脑海中,实现 didFailWithError CLLocationManagerDelegate 回调以在您被拒绝时得到通知,并在 locationServicesEnabled 变量上使用 KVO 监视来确定它是否切换为 YES。可能有更好的方法,但这是一种方法。
    【解决方案2】:

    请注意 locationServicesEnabled 是 4.0 中的新功能,因此如果您的部署目标较低,则无法使用。

    编辑:没关系——类方法 [CLLocationManager locationServicesEnabled] 是 4.0 中的新方法。但是对于早期的 SDK,现在有一个已弃用的实例属性 .locationServicesEnabled。

    【讨论】:

      猜你喜欢
      • 2011-08-19
      • 2011-03-29
      • 1970-01-01
      • 2016-03-29
      • 2011-11-14
      • 1970-01-01
      • 2015-10-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多