在某些觸發器拒絕位置共享之後,是否有方法可以再次提示用戶進行地理定位?HTML5 GEOLocation第二提示
navigator.geolocation.getCurrentPosition
觸發一次,連續調用不會產生相同的結果。無法找到答案的任何地方/
在某些觸發器拒絕位置共享之後,是否有方法可以再次提示用戶進行地理定位?HTML5 GEOLocation第二提示
navigator.geolocation.getCurrentPosition
觸發一次,連續調用不會產生相同的結果。無法找到答案的任何地方/
在這段代碼看看,這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
如果用戶點擊拒絕權限,這僅僅意味着沒有。「不,不要再來煩我......」
但是用戶可以通過刪除位置共享的設置做到這一點,那當然提示再次彈出。
或者,如果瀏覽器允許,用戶可以更改設置,但例如, 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);
這是否真正解決問題的問題就在這裏(該提示允許地理位置查找不會再次拿出它被拒絕一次後)...?我對此表示懷疑。 – CBroe 2013-06-21 10:32:13
不回答我的問題,雖然 – 2013-08-19 21:13:20
我想解決它的唯一方法是刷新頁面(如果它的一個選項)能夠再次提示。 – 2013-11-11 23:14:16