HTML5定位API和一些定位失败的场景
2019-12-12 本文已影响0人
葶寳寳
地理位置 API 允许用户向 Web 应用程序提供他们的位置。出于隐私考虑,报告地理位置前会先请求用户许可。
HTML5
提供了Navigator.geolocation.getCurrentPosition(success, [error, options]) API
来获取当前定位。
这会异步地请求获取用户位置,并查询定位硬件来获取最新信息。当定位被确定后,定义的回调函数就会被执行。您可以选择性地提供第二个回调函数,当有错误时会被执行。第三个参数也是可选的,您可以通过该对象参数设定最长可接受的定位返回时间、等待请求的时间和是否获取高精度定位。
默认情况下,getCurrentPosition()
会尽快返回一个低精度结果(options
中有一个 enableHighAccurancy
属性,默认值是false
)。
这里所谓的“高精度”,也就是说通过 GPS 定位。但是 GPS 定位通常比较耗电、而且定位速度比较慢,所以 enableHighAccurancy
默认值 false,也就是说程序会尽快通过 WLAN、IP 来定位,而不是会刻意的使用 GPS 来定位。
手机的系统设置导致的一些定位失败问题:
1.在设备中可以设置系统的定位策略,如果选择“仅限设备-使用 GPS 确定位置”,那么默认的定位策略“快速定位”将会尝试用网络定位,但这个选项没有启动网络、可能会导致定位失败。
2.还有一种定位失败的场景是,在系统中设置了定位选项为允许,但设置中并未开启GPS定位,也可能会导致定位失败。(在默认的快速定位策略下,用网络或IP定位失败后,会尝试用GPS定位)。
image.png
webview不支持HTML5定位API,这种情况下定位API不会返回任何结果。