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