【发布时间】:2015-05-22 10:38:17
【问题描述】:
我使用 google maps sdk 开发了一个基于位置的应用程序。如何在没有位置服务的情况下获得当前位置(即位置服务不允许)。我想使用蜂窝数据或 wifi 网络获取当前位置
【问题讨论】:
标签: ios location core-location core
我使用 google maps sdk 开发了一个基于位置的应用程序。如何在没有位置服务的情况下获得当前位置(即位置服务不允许)。我想使用蜂窝数据或 wifi 网络获取当前位置
【问题讨论】:
标签: ios location core-location core
通过使用 CLLocationManager 与 MKMapViewDelegate 一起在技术上与 Core Location 分开,您可以不必实现 Core Location 的框架。
具体来说,确实更新了 userLocation 函数,它实现了纬度、经度、中心、跨度和区域,以找到您当前的位置。
不要忘记在 info.plist 文件中添加“隐私 - 使用时的位置描述”权限。
【讨论】:
CoreLocation 的一部分,你为什么会推荐它?
我不认为你可以。更重要的是,苹果会允许这样的事情吗?可能不会,这取决于您如何处理。
但是我的一个想法是,您可以在线查看是否有一些在线服务可以通过简单的 API 请求将您的当前位置传递给您。它很可能会使用用户 IP 地址来确定您的位置。但是,如果用户使用像 VPN 这样简单的东西,那么这将不会返回正确的位置。最后,如果您使用这样的方法,请确保您首先提示用户许可,否则 Apple 将拒绝您的应用。
更新
它允许您传递用户的 IP 地址以换取他们当前的位置。我相信它会传回一个非常容易解析的简单 JSON 文件。然后,您可以在您的应用中使用已解析的位置信息。
这里的限制是,如果用户没有互联网连接,那么这将不起作用。因此,如果您在森林中间或其他地方,那么这可能不是最佳选择。
你真的应该使用CoreLocation,它使用 GPS 并会返回一组非常准确的坐标。
【讨论】:
要使用 wifi 或蜂窝网络获取位置,您必须使用 CoreLocation 并获得用户的许可才能获取其位置。
根据Apple Docs:
对于您使用的服务,准确配置与该服务关联的所有属性。核心位置通过在不需要时关闭硬件来积极管理电源。 例如,将位置事件的所需精度设置为一公里,位置管理人员可以灵活地关闭 GPS 硬件并仅依赖 WiFi 或蜂窝无线电,这可以显着节省电力。
因此,CoreLocation 会根据您的应用所需的准确度来决定从何处获取位置。但是您仍然需要许可。
如果您只需要国家或地区,Dan 在他的回答中建议的基于 IP 的方法可能足以满足您的需求。
【讨论】: