如何获得用户当前位置的最大准确性

时间:2012-07-04 10:17:37

标签: javascript geolocation

我正在使用此代码来获取准确的用户位置...

watchID=navigator.geolocation.watchPosition(handleGetCurrentPosition, handleGetCurrentPositionError, {enableHighAccuracy:true});

function handleGetCurrentPosition(location)
{   
    document.getElementById("lat").value = location.coords.latitude;
    document.getElementById("lon").value = location.coords.longitude;
    document.getElementById("accu").value =location.coords.accuracy;
    document.forms["myform"].submit();
}

function handleGetCurrentPositionError(){
    alert("Location could not be found.")
}

但我得到的结果并不准确。 我正在使用的代码有什么问题吗?

4 个答案:

答案 0 :(得分:1)

准确度取决于Geolocation设备的功能。 navigator.geolocation只是API,可与该设备配合使用。如果设备不支持高精度,则无法使用它。

答案 1 :(得分:1)

这下面的代码可以获得准确的位置。我用HTML 5编写了这段代码。

  1. 在html文档中创建地图占位符。
  2. < output id =“mapToYou”>搜索您当前的位置...< / output>

    1. 在页面加载中调用此js脚本。
    2. 
          window.addEventListener("load", function() {
              if (navigator.geolocation) {
                  navigator.geolocation.getCurrentPosition(success, error);
              } else {
                  error('not supported');
              }
          },false);
      
          function success(position) {
              var mapToYou = document.querySelector('#mapToYou');
              alert("Gotcha!");
              var latlng = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
              var myOptions = {
                          zoom: 15,
                          center: latlng,
                  mapTypeControl: false,
                  navigationControlOptions: {
                      style: google.maps.NavigationControlStyle.SMALL
                  },
                  mapTypeId: google.maps.MapTypeId.ROADMAP
              };
      
              var googleMap = new google.maps.Map(mapToYou, myOptions);
              var marker = new google.maps.Marker({
                position: latlng, 
                map: googleMap, 
                title:"You are here!"
              });
          }
      
          function error(msg) {
              var mapToYou = document.querySelector('#mapToYou');
              mapToYou.innerHTML = typeof msg == 'string' ? msg : "failed";
              mapToYou.className = 'fail';
      
              // console.log(arguments);
          }
      
      

答案 2 :(得分:0)

你有没有尝试过谷歌的位置api?

如果没有,这是链接: https://developers.google.com/maps/documentation/directions/

实际上,Google正在开发许多正在进行的API,以提高定位的准确性

答案 3 :(得分:0)

我在http://www.geoplugin.com找到了这个有用的链接,它提供了一个非常好的位置过滤API,并且在预测用户位置时具有非常可靠的精确度。

以下是如何使用它的示例:http://www.jquery4u.com/api-calls/geo-location-2-lines-javascript/#.T_QZrxdo3IU