我目前使用Modernizr来检测特定设备是否支持地理位置信息。然而,如果用户已禁用其设备的位置服务,我想显示更具体的错误消息。
我收到的抱怨是,在支持的浏览器上地理位置信息无法使用,实际上是用户没有启用地理位置服务。
我知道有一些使用本机移动代码来检测这个问题的方法,但是是否有一种使用JavaScript来解决的方法?Modernizr是否支持这个功能?
我目前使用Modernizr来检测特定设备是否支持地理位置信息。然而,如果用户已禁用其设备的位置服务,我想显示更具体的错误消息。
我收到的抱怨是,在支持的浏览器上地理位置信息无法使用,实际上是用户没有启用地理位置服务。
我知道有一些使用本机移动代码来检测这个问题的方法,但是是否有一种使用JavaScript来解决的方法?Modernizr是否支持这个功能?
你的错误回调是否曾经触发过?如果没有,请尝试添加一个。如果它从未触发过,则可以在函数上设置超时,如果在一定时间内未收到权限,则显示通知。
由于如果禁用了geo,则errorCallback永远不会触发,因此请在该函数周围创建一个包装器,它将在另一个函数上创建一个settimeout。如果api的任何回调都触发了,则在其触发之前删除settimeout。
var timeOutId;
function disabledGeoHandler(){...}
function show_map() {
clearTimeout(timOutId);
...
}
function show_map_error() {
clearTimeout(timOutId);
...
}
function lookup_location() {
timeOutId = setTimeout(disabledGeoHandler, 1000);
navigator.geolocation.getCurrentPosition(show_map, show_map_error);
}