2013-04-22 23 views
7

Có cách nào để nhắc người dùng định vị lại một lần nữa trên một số trình kích hoạt không, sau khi họ từ chối chia sẻ vị trí?HTML5 GEOLocation 2nd prompt

navigator.geolocation.getCurrentPosition 

kích hoạt nó một lần, các cuộc gọi liên tiếp không tạo ra kết quả tương tự. Cant tìm ra câu trả lời bất cứ nơi nào/

Trả lời

0

Hãy xem Code Snippet này và điều này SO trả lời: 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; 
    }); 
} 

Hãy Nhìn vào này Fiddle Link còn JQuery Geolocator Plugin

+0

Điều này có thực sự giải quyết vấn đề trong câu hỏi ở đây (mà dấu nhắc để cho phép tra cứu định vị không đưa ra một lần nữa sau khi nó bị từ chối một lần)…? Tôi nghi ngờ điều đó. – CBroe

+0

không trả lời câu hỏi của tôi mặc dù –

+0

Tôi đoán cách duy nhất để giải quyết vấn đề là làm mới trang (nếu có tùy chọn) để có thể nhắc lại. –

0

Trong Định vị API? Số

Nếu người dùng nhấp từ chối cho phép nó chỉ đơn giản có nghĩa là "Không, và không làm phiền tôi một lần nữa ..."

Tuy nhiên người dùng có thể làm điều đó bằng cách xóa Location-phần-settings, sau đó tất nhiên dấu nhắc bật ra lần nữa.

Hoặc người dùng chỉ có thể thay đổi cài đặt nếu trình duyệt cho phép, tuy nhiên, ví dụ: Chrome quản lý các cài đặt này dưới dạng ngoại lệ (bất kể người dùng đã cho phép hay từ chối quyền) để người dùng phải xóa cài đặt, resp. ngoại trừ.

Bây giờ là gì?

Tùy chọn duy nhất của bạn là bắt lỗi và sử dụng ví dụ: một số API bên ngoài để tìm vị trí của người dùng theo IP. Bạn có thể tự mình lập trình hoặc có tất cả các giải pháp hiện có như @Venkat đề xuất.

Nhưng lưu ý rằng định vị địa lý IP là một điều khó khăn - đôi khi nó có độ chính xác về số địa chỉ đôi khi chỉ là trạng thái chính xác.

examle này from Mozilla's docs cho thấy một ví dụ tốt đẹp làm thế nào để xử lý các lỗi Định vị:

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); 
Các vấn đề liên quan