【问题标题】:iPhone : How do I display the user location on a map view without updating location / having GPS running in the background?iPhone:如何在不更新位置/在后台运行 GPS 的情况下在地图视图上显示用户位置?
【发布时间】:2012-04-19 20:03:00
【问题描述】:

如何在不运行 GPS 更新位置(完全)时在 mapView 中显示用户位置?会

mapView.userTrackingMode = kCLLocationAccuracyNearestTenMeters;

完成这项工作还是 GPS 仍会在后台消耗电池?

谢谢:)

【问题讨论】:

  • 我认为它仍然会在后台运行 GPS。
  • :/ 那么你将如何显示用户位置呢?
  • 我怀疑他希望地图在 GPS 和/或 CoreLocation 以编程方式关闭时静态显示(即根本不移动),因此电池不会很快耗尽。
  • 嗯...我不确定...我做 iOS 开发不如我做 Web 开发。为什么电池如此重要?作为开发者,您应该让您的应用“精简”和“轻便”,但用户有责任每晚为他们的设备充电。
  • 您实际上是在问“我如何在不检查用户位置的情况下知道用户的位置”。这不是一个有意义的问题。

标签: iphone gps location mkmapview power-management


【解决方案1】:

鉴于信息有限,我将尽力回答您的问题。

GPS 有 3 种主要模式,从低功率到高功率,从低精度到高精度。

  • 位置跟踪关闭
  • 后台位置更新(使用手机信号塔和 wifi)
  • GPS 位置更新

如果您将showsUserLocation 设置为YESMKMapView 将为用户位置显示一个蓝点。 MKMapView 将使用所有可用的定位方法尽可能准确地找到用户的位置,并在设置为 YES 时不断更新它。

MKMapView 中的跟踪是一种将用户位置保持在屏幕中心的模式,随着用户的移动移动可见的地图区域,并且在 iOS5 中可用。您可以选择三个MKUserTrackingModes。来自文档:

MKUserTrackingModeNone:地图不跟随用户位置。

MKUserTrackingModeFollow:地图跟随用户位置。

MKUserTrackingModeFollowWithHeading:地图跟随用户位置 并在航向改变时旋转。

因此将其设置为 kCLLocationAccuracyNearestTenMeters 是行不通的,因为在这种情况下它不是一个可用的选项。

在后台显示位置会烧电池吗?这取决于你所说的背景。当用户点击主页按钮时,MKMapView 被系统强制停止使用 GPS。当应用程序正在运行并且 MKMapView 处于活动状态并且将 showsUserLocation 属性设置为 YES 时,它将继续使用任何可用的方法(包括 GPS)来更新位置。您有几个策略可以减少这种情况。

1) 假设用户需要在地图显示在屏幕上时看到他们的位置更新。在这种情况下,将 showsUserLocation 设置为 YES 直到地图移出屏幕或设备被锁定,然后将其设置为 NO

2) 假设用户只需要从特定时间点(例如打开应用程序时)查看其位置的静态标记。在这种情况下,您需要创建一个CLLocationManager 对象,将其发送给startUpdatingLocation,过滤委托消息以获得所需的准确性,然后关闭位置更新(stopUpdatingLocation)。然后,您可以将 MKAnnotation 添加到 MKMapView 以向用户显示他们的位置。

如您所见,第 2 项工作量更大,但非常省电。数字 1 很简单,但在地图可见时会消耗更多电池。由您决定用户期望的行为并相应地实施您的应用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-05
    • 2017-03-22
    • 1970-01-01
    相关资源
    最近更新 更多