2013-05-18 94 views
1

我在定位地理位置最基本的方面遇到問題 - 無論我做什麼,我似乎都無法獲得回退觸發。下面的代碼:地理位置回退

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試圖與相同的結果:如果停用定位服務或提示時拒絕訪問,最後的「其他'功能不會觸發。

我已經看過無數這種地理位置優雅故障的例子,並且看不出爲什麼它不起作用。

我真的很感激我犯錯的任何線索。

回答

1

好的 - 問題解決了!我不知道,如果我覺得只是傻傻或開明的,但對於其他人同樣的問題的利益,這裏的解決方案:

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上指引我朝着正確的方向。