2013-04-22 25 views
7

在某些觸發器拒絕位置共享之後,是否有方法可以再次提示用戶進行地理定位?HTML5 GEOLocation第二提示

navigator.geolocation.getCurrentPosition 

觸發一次,連續調用不會產生相同的結果。無法找到答案的任何地方/

回答

0

在這段代碼看看,這SO答:What is the best JQuery plugin that handles HTML5 location?

if (navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(successFunction, errorFunction); 
}else{ 
    errorFunction(); 
} 

function successFunction(position) { //uses HTML5 if available 
    var lat = position.coords.latitude; 
    var lng = position.coords.longitude; 
} 

function errorFunction(){ //uses IP if no HTML5 
    $.getJSON("http://freegeoip.net/json/", function(res){ 
     var lat = res.latitude; 
     var lng = res.longitude; 
    }); 
} 

在這個Fiddle Link還 JQuery Geolocator Plugin

+0

這是否真正解決問題的問題就在這裏(該提示允許地理位置查找不會再次拿出它被拒絕一次後)...?我對此表示懷疑。 – CBroe 2013-06-21 10:32:13

+0

不回答我的問題,雖然 – 2013-08-19 21:13:20

+0

我想解決它的唯一方法是刷新頁面(如果它的一個選項)能夠再次提示。 – 2013-11-11 23:14:16

0

在地理位置API看一看?

如果用戶點擊拒絕權限,這僅僅意味着沒有。「不,不要再來煩我......」

但是用戶可以通過刪除位置共享的設置做到這一點,那當然提示再次彈出。

或者,如果瀏覽器允許,用戶可以更改設置,但例如, Chrome將這些設置作爲例外管理(無論用戶是否允許或拒絕),因此用戶必須刪除設置,無論如何。

現在是什麼?

您唯一的選擇是捕捉錯誤並使用例如一些外部API通過IP查找用戶的位置。您可以自己編寫程序,或者根據@Venkat的建議,當然有現成的解決方案。

但是要知道IP地理定位是一個棘手的問題 - 有時它具有地址數量精度,有時候它只是狀態精度。

這examle from Mozilla's docs顯示了一個很好的例子,如何處理地理位置的錯誤:

var options = { 
    enableHighAccuracy: true, 
    timeout: 5000, 
    maximumAge: 0 
}; 

function success(pos) { 
    var crd = pos.coords; 

    console.log('Your current position is:'); 
    console.log('Latitude : ' + crd.latitude); 
    console.log('Longitude: ' + crd.longitude); 
    console.log('More or less ' + crd.accuracy + ' meters.'); 
}; 

function error(err) { 
    /* 
    CALL EXTERNAL API HERE 
    */ 
    console.warn('ERROR(' + err.code + '): ' + err.message); 
}; 

navigator.geolocation.getCurrentPosition(success, error, options);