2012-02-09 27 views
14

Ok vì vậy tôi đang xây dựng một ứng dụng sử dụng API vị trí địa lý. Tôi không thể nhận được một đoạn mã rất đơn giản để làm việc trên Firefox 10. Đây là mã:navigator.geolocation.getCurrentPosition Gọi lại sẽ không hoạt động trên Firefox 10

window.onload = function() { 
     if (navigator.geolocation) { 
      navigator.geolocation.getCurrentPosition(function(position) { 
       alert('it works'); 
      }, function(error) { 
       alert('Error occurred. Error code: ' + error.code);   
      }); 
     }else{ 
      alert('no geolocation support'); 
     } 
    }; 

Vì vậy, ví dụ: trong chrome, sau khi chạy trang, tôi sẽ được hỏi xem có muốn chia sẻ không vị trí của tôi, và sau khi nhấp vào có nó sẽ cảnh báo tôi với "nó hoạt động". Bây giờ trong Firefox 10 nó sẽ yêu cầu tôi chia sẻ vị trí của tôi và sau khi nhấp vào chia sẻ nó không có gì ... Tôi đã cố gắng để có được gọi lại để chạy bất kỳ loại mã nhưng không có may mắn. Đây có phải là một lỗi với Firefox hoặc tôi đang làm điều gì sai? Tôi có một ví dụ về mã ở đây để thử nghiệm: http://dev-hub.com/geolocation.html.

Sửa --- OS của tôi là windows 7 64bit

+0

về phần cứng nào bạn đang chạy firefox? –

+0

Trên các cửa sổ 7 64 – Zaptree

+0

Tính năng Định vị địa lý yêu cầu thiết bị di động hỗ trợ định vị địa lý. [Bạn có thể tìm hiểu thêm tại đây.] (Http://stackoverflow.com/questions/1349064/which-devices-support-javascript-geolocation-via-navigator-geolocation) –

Trả lời

18

Được rồi tôi thấy rằng vấn đề thực sự là Firefox và rằng nó không hoạt động đáng tin cậy hay không kém trên tất cả các nền tảng. Nhìn vào http://dev.w3.org/geo/api/spec-source.html Tôi tìm thấy tùy chọn sau đây để thêm:

window.onload = function() { 
     if (navigator.geolocation) { 
      navigator.geolocation.getCurrentPosition(function(position) { 
       alert('it works'); 
      }, function(error) { 
       alert('Error occurred. Error code: ' + error.code);   
      },{timeout:5000}); 
     }else{ 
      alert('no geolocation support'); 
     } 
    }; 

Như bạn có thể thấy ở đây thời gian chờ: 5000 đã được thêm vào có nghĩa là nếu vì một lý do trình duyệt mất nhiều thì 5000ms (5 giây) sau đó ném một lỗi hết thời gian chờ (đó là mã lỗi 3). Vì vậy, bây giờ bất cứ khi nào Firefox không hoạt động, ít nhất nó cũng chạy được lỗi gọi lại và tôi nhận được thông báo cảnh báo về "Đã xảy ra lỗi. Mã lỗi: 3".

Dường như giá trị thời gian chờ mặc định là vô hạn nên không bao giờ hết thời gian ... Chrome đáng tin cậy 100% nhưng Firefox đáng tin cậy khoảng 10% trên máy của tôi, điều này rất đáng thất vọng. Trên máy tính khác đang chạy Windows XP và trên cùng một mạng, Firefox có vẻ đáng tin cậy 100%.

+7

50000 ms = 50 giây ... vì vậy có lẽ nên sử dụng 5000 ms (3 số không) –

0

Tôi đã thực hiện ví dụ này cho bạn:

if(!navigator.geolocation){ 
alert('El Navegador no soporta GeoLocalización'); 
} 

function doGeo(position) 
{ 
    var coords = position.coords.latitude + '+' + position.coords.longitude; 
    var url = 'https://maps.google.es/?q=' + coords; 
    $("#lat").html("Latitud: " + position.coords.latitude); 
    $("#lon").html("Longitud: " + position.coords.longitude); 
    $("#acc").html("Precisión: " + position.coords.accuracy); 
    $("#alt").html("Altitud: " + position.coords.speed);   
    var link = '<a class="btn btn-primary" href="' + url + '" target="_blank">Ir a la  Ubicación en Google Maps</a>'; 
    $(link).appendTo('#GoogleMaps'); 
} 

function lost() 
{ 
    alert('Algo salió mal, Intentelo más tarde...'); 
}; 
navigator.geolocation.watchPosition(doGeo, lost, {maximumAge:0,enableHighAccuracy:true}   ); 

http://jsfiddle.net/aA2zv/35/

hy vọng nó sẽ giúp!

+0

Altitud == Speed? –

+0

Đã nhận được tin nhắn từ chức năng bị mất :( –

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