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