Google 地图:如果用户拒绝地理定位,则调用另一个使用 Public IP 的方法
Google Maps: If User Denies Geolocation, Then Call Another Method That Uses Public IP
我有一个简单的问题,我似乎无法回避。我正在使用 Google 地图 javascript 来显示特定位置,这在用户接受地理定位服务时一切正常。要测试 Google 地图,请考虑 Ip 是否正常工作,允许 google 地图使用 public IP 地址也可以正常工作。但是,当我尝试执行以下操作时,甚至没有调用 showLocationBasedOnIP() 方法。
function initMap(){
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
}
else{
showLocationsBasedOnIP();
}
}
我已经通过删除地理位置检查器独立测试了 showLocationsBasedOnIP,但是当我尝试如上所示集成它时,甚至没有触发该方法。
我想要实现的是,当用户拒绝地理定位时,应该触发我的 showLocationsBasedOnIP() 方法,其中我在浏览器上显示一条消息,表明正在使用 public IP 地址,并且除非用户打开地理定位,否则定位服务将不准确。
有什么遗漏吗?
您需要将 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>
现在您的函数将在两种情况下执行;当用户不允许位置权限以及当用户的浏览器不支持地理定位时。
我有一个简单的问题,我似乎无法回避。我正在使用 Google 地图 javascript 来显示特定位置,这在用户接受地理定位服务时一切正常。要测试 Google 地图,请考虑 Ip 是否正常工作,允许 google 地图使用 public IP 地址也可以正常工作。但是,当我尝试执行以下操作时,甚至没有调用 showLocationBasedOnIP() 方法。
function initMap(){
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
}
else{
showLocationsBasedOnIP();
}
}
我已经通过删除地理位置检查器独立测试了 showLocationsBasedOnIP,但是当我尝试如上所示集成它时,甚至没有触发该方法。
我想要实现的是,当用户拒绝地理定位时,应该触发我的 showLocationsBasedOnIP() 方法,其中我在浏览器上显示一条消息,表明正在使用 public IP 地址,并且除非用户打开地理定位,否则定位服务将不准确。
有什么遗漏吗?
您需要将 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>
现在您的函数将在两种情况下执行;当用户不允许位置权限以及当用户的浏览器不支持地理定位时。