地理位置回退
问题描述:
我在定位地理位置最基本的方面遇到问题 - 无论我做什么,我似乎都无法获得回退触发。下面的代码:地理位置回退
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position){
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
var latNum = parseFloat(latitude);
var longNum = parseFloat(longitude);
这是紧跟嵌套一堆如果...否则,如果,一些限定区域和else语句中的一个中触发基于用户的位置不同功能的语句赶用户不在任何定义的位置的情况。这个部分一切正常,包括最后的'else'条件。如果用户的设备没有启用地理位置,或者用户在提示时拒绝访问位置数据。
应该抓住这个代码很简单:
} else {
function10();
}
我在FF,Safari和Chrome试图与相同的结果:如果停用定位服务或提示时拒绝访问,最后的“其他'功能不会触发。
我已经看过无数这种地理位置优雅故障的例子,并且看不出为什么它不起作用。
我真的很感激我犯错的任何线索。
答
好的 - 问题解决了!我不知道,如果我觉得只是傻傻或开明的,但对于其他人同样的问题的利益,这里的解决方案:
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position){
// Do something here if you get position data
},
function() {
// Do something else if you don't get any position data
}
);
}
我哪里错了,我想,我需要看看对于function(position)
的失败而不是没有启用地理定位的代理。在条件相同的情况下,第二个函数在没有从浏览器返回位置数据的情况下提供动作,无论原因如何。原始代码中的最后'else'声明只会在没有地理定位能力的设备上触发。
现在这一切都很有意义,但我不得不说在Google上的文档,许多教程网站远没有明确这一点,经常引用我的初始语法覆盖地理位置容量未启用的情况区别于不存在)。
感谢this answer在SO上指引我朝着正确的方向。