2011-08-03 20 views
6

Có ai đó phải đối phó và quản lý để tìm giải pháp khả thi cho vấn đề vị trí địa lý của Firefox 5 mà tôi đã đăng trong báo cáo lỗi sau. Việc liên kết đến báo cáo dễ dàng hơn là mô tả lại ở đây.Firefox 5, Geolocating và "Not Now" Số phát hành

https://bugzilla.mozilla.org/show_bug.cgi?id=675533

Chắc chắn tôi không phải là người duy nhất trên hành tinh này đã cắn.

+1

Cùng một vấn đề ở đây. Các kỹ sư bình luận trong báo cáo lỗi tạo ra một điểm tốt (UI của bạn nên xử lý một cách duyên dáng trường hợp không nhận được phản hồi), nhưng theo ý kiến ​​của tôi nó sẽ hết thời gian chờ và do đó kích hoạt lỗi gọi lại trong trường hợp đó. – brianjcohen

Trả lời

2

Điều này thực sự không giải quyết được vấn đề của bạn nhưng chiến lược xử lý việc này là đặt điểm vị trí mặc định mà tôi sử dụng ngay lập tức (không chờ câu hỏi vị trí địa lý được trả lời).

Nếu tôi nhận được vị trí từ người dùng, tôi chỉ cần thay đổi vị trí đó sang vị trí mới. Nếu tôi bị từ chối hoặc không có câu trả lời nào cả, tôi chỉ ở lại vị trí mặc định. Đó cũng là kinh nghiệm của tôi rằng một khách hàng máy tính để bàn (trong trường hợp của tôi Firefox trên một máy tính Windows cố định) mất nhiều hơn lâu hơn để đáp ứng hơn một khách hàng di động (trong trường hợp của tôi là Safari trên iPhone). Tôi đã buộc phải thiết lập thời gian chờ đến 10 giây (10000) để cung cấp cho khách hàng máy tính để bàn đủ thời gian để trả lời. Vì vậy, nếu bạn có một bản đồ, khởi tạo nó và định tâm trên một vị trí mặc định trực tiếp sẽ cung cấp cho người dùng một bản đồ trên màn hình nhanh hơn nhiều nếu bạn phải chờ phản hồi.

Chúc bạn may mắn với dự án định vị của mình!

+0

ý tưởng hay - giá trị mặc định –

2

Tôi có thể hơi muộn nhưng hy vọng tôi có thể giúp người khác. Cách giải quyết của tôi dựa trên cuộc gọi bị trì hoãn. Nếu không có khắc phục khi cuộc gọi bị trì hoãn bị kích hoạt, tôi trở nên đáng ngờ :)

var timeIsPassig = false; 

function anyThing(){ 
    timeIsPassig = true; 
    setTimeout(
    function(){ 
     if (timeIsPassig) { 
     timeIsPassig = false; 
     console.log("Waiting too much... Or did you say not now? :-P"); 
     } 
     }, 
    10000 
    ); 
    navigator.geolocation.getCurrentPosition(
    function (pos) {timeIsPassig = false; /* rest of positioning*/}, 
    function (err) {timeIsPassig = false; /* rest of error handling*/}, 
    {maximumAge: 30000, timeout: 10000, enableHighAccuracy: true} 
    ) 
    } 
+0

Câu trả lời hay. Và nó cũng giải quyết trường hợp mà các nhà phát triển Mozilla đang tạo ra - rằng chúng ta nên xử lý trường hợp "nếu người dùng bỏ qua nó". Ngẫu nhiên IE11 thậm chí không có một "từ chối nó lần này" tùy chọn, vì vậy đây là giải pháp tôi đề xuất cho nhóm phát triển của tôi. –

Các vấn đề liên quan