如何在没有核心位置的情况下找到您当前的位置?

问题描述 投票:0回答:3

我使用 Google Maps SDK 开发了一个基于位置的应用程序。在没有位置服务的情况下如何获取当前位置(即位置服务不允许)?我想使用蜂窝数据或 WiFi 网络获取当前位置。

ios location core-location
3个回答
3
投票

要使用 wifi 或蜂窝网络获取位置,您必须使用 CoreLocation 并获得用户的许可才能获取其位置。

根据Apple 文档

对于您使用的服务,准确配置与该服务关联的任何属性。 Core Location 通过在不需要时关闭硬件来积极管理电源。 例如,将位置事件所需的精度设置为一公里,位置管理器可以灵活地关闭 GPS 硬件并仅依赖 WiFi 或蜂窝无线电,这可以显着节省电量

因此,CoreLocation 会根据您的应用程序所需的精度来决定从哪里获取位置。但你仍然需要许可。

如果您只需要国家/地区左右,Dan 在其回答中建议的基于 IP 的方法可能足以满足您的需求。


1
投票

我认为你做不到。更重要的是,苹果会允许这样的事情发生吗?可能不会,取决于你如何去做。

但是我的一个想法是,您可以在线查看是否有某种在线服务可以通过简单的 API 请求向您传递您当前的位置。它很可能会使用用户的 IP 地址来确定您所在的位置。但是,如果用户使用的是 VPN 这样简单的东西,那么这将不会返回正确的位置。最后,如果您使用这样的方法,请确保您首先提示用户获得许可,否则 Apple 将拒绝您的应用程序。

更新

这是一项免费服务,值得一看:http://www.ipaddresslabs.com/IP-GeoLoc-ip-address-geolocation-locator-lookup-database-software-geography-country-region-state-县-省-城市-邮政-邮政编码-都会区-地区代码-纬度-经度@IP-GeoLoc

它允许您传递用户的 IP 地址以换取他们的当前位置。我相信它会传回一个简单的 JSON 文件,该文件非常容易解析。然后,您可以根据需要在应用程序中使用解析后的位置信息。

这里的限制是,如果用户没有互联网连接,那么这将不起作用。因此,如果您位于森林或其他地方,那么这可能不是最好的选择。

你真的应该使用

CoreLocation
,它使用GPS,并会返回给你一组非常准确的坐标。


0
投票

通过使用 CLLocationManager(在技术上与 MKMapViewDelegate 一起独立于 Core Location),您可以不必实现 Core Location 的框架。

具体来说,did update userLocation 函数实现了纬度、经度、中心、跨度和区域来查找您当前的位置。

不要忘记在 info.plist 文件中添加“隐私 - 使用时的位置使用描述”权限。

© www.soinside.com 2019 - 2024. All rights reserved.