地理位置许可

时间:2014-10-01 19:28:34

标签: javascript html ajax html5 geolocation

我正在尝试做一个简单的地理定位html5:

$(function() {  
    var currentLatitude ="";
    var currentLongitude ="";
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition, showError);
    function showPosition(position) {
            currentLatitude = position.coords.latitude;
            currentLongitude = position.coords.longitude;                                                
        }   
    } else {
       // location based on the IP - less accurate

    }  

错误是位置错误的权限,即使我有我的站点(本地运行)异常。 我的第二个选择是IP(ipinfo.io):

function showError(error) {
      var x = $('#curr_loc_target');

      switch(error.code) {
        case error.PERMISSION_DENIED:
          x.html("User denied the request for Geolocation.");
           jQuery.get("http://ipinfo.io/json", function (response)
               {
                    console.log(response) ;
                   currentLatitude = response.loc.split(',')[0]; 
                   currentLongitude = response.loc.split(',')[1];
                   console.log("lat" + currentLatitude+ "," + "lngs" +currentLongitude) ;
               } );
          break;
        case error.POSITION_UNAVAILABLE:
          x.html("Location information is unavailable.");
          break;
        case error.TIMEOUT:
          x.html("The request to get user location timed out.");
          break;
        case error.UNKNOWN_ERROR:
          x.html("An unknown error occurred.");
          break;
        }
    }

它有效,但根本不准确。 我需要做的就是将lat,lng发送到我的服务器,如果它不是本地的,它会工作吗? 或者有人知道解决这个错误的方法吗?

2 个答案:

答案 0 :(得分:0)

在我的网站上运行的代码。您似乎已禁用浏览器上的地理位置跟踪,直接将您发送到错误方案。请注意,它将要求用户明确授予您获取位置跟踪信息的权限。

答案 1 :(得分:0)

我试图测试地理位置,也从我的本地计算机上打开.html文件 - Chrome总是在这里给我错误回调:

navigator.geolocation.getCurrentPosition(success, error);

尽管已启用地理定位跟踪。 其他浏览器给出了成功回调。 然后我将页面放到托管中,它在所有浏览器中都取得了成功,包括Google Chrome。 当您的网站在本地运行时,您可能有类似的原因获得位置许可。