我有一个简单的问题,我似乎不能解决。我正在使用谷歌地图javascript来显示特定的位置,当用户接受地理定位服务时,这一切都很好用。为了测试谷歌地图considerIp的工作情况,允许谷歌地图使用公共IP地址也很好。但是,当我尝试执行下面的操作时,showLocationBasedOnIP()方法甚至没有被调用。
function initMap(){
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
}
else{
showLocationsBasedOnIP();
}
}我已经通过删除地理位置检查器独立测试了showLocationsBasedOnIP,但是当我尝试集成它时,就像上面所示的那样,该方法甚至没有被触发。
我想要实现的是,当用户拒绝地理定位时,应该触发我的showLocationsBasedOnIP()方法,在该方法中,我将在浏览器上显示一条消息,指出正在使用公共IP地址,并且除非用户打开地理定位,否则定位服务将不会准确。
我是不是漏掉了什么?
发布于 2020-05-21 22:15:37
您需要将showLocationsBasedOnIP函数设置为getCurrentPosition()的错误回调函数。如下所示:
<!DOCTYPE html>
<html>
<body>
<button onclick="getLocation()">Try It</button>
<script>
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition, showLocationsBasedOnIP);
} else {
showLocationsBasedOnIP();
}
}
function showPosition(position) {
console.log("showing position: ", position.coords.latitude, position.coords.longitude);
}
function showLocationsBasedOnIP() {
console.log("showing location based on IP");
}
</script>
</body>
</html>现在,您的函数将在两种情况下执行:当用户不允许位置权限时,以及当用户的浏览器不支持地理位置时。
https://stackoverflow.com/questions/61891547
复制相似问题