2018-05-15  376 views 评论

手机定位的经纬度在百度地图中无法正常定位

 标签:      

在项目中发现一个问题,手机获取到的经纬度百度地图的坐标拾取中并未生效,差距还比较大。

情况是这样的:

当时定位地址为北纬 31°10′30″   东经 120°38′37″

随后访问百度地图坐标拾取系统:http://api.map.baidu.com/lbsapi/getpoint/index.html

系统要求输入的格式是这样的116.345627,40.032156   于是乎,我就输入了120.3837,31.1030,反查到的地址如下,都块到西山了:

访问如下地址:http://www.gpsspg.com/maps.htm   输入经纬度,实际地址如下:

两个定位差距以较大,跟朋友聊起也发现有这个问题,甚至出现苏州的定位实际定位到了无锡,这差距就更大了。

经过度娘后发现,现在使用的网络地图有自己的坐标格式 就如同:116.345627,40.032156  小数点后面的数字其实是需要根据一定规律转换的。

经过查询资料文档,写了转换的JS算法,如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>地图经纬度坐标互转</title>
  </head>
  <body>
    <h4>坐标转经纬度</h4>
    <div>
      <span class="info3">度分秒:
     	<input class="input" id="input_dfm1" name="dfm1" style="width: 50px" value="" >&nbsp;°&nbsp;
     	<input class="input" id="input_dfm2" name="dfm2" style="width: 50px" value="" >&nbsp;'&nbsp;
     	<input class="input" id="input_dfm3" name="dfm3" style="width: 50px" value="" >&nbsp;"&nbsp;&nbsp;
     	<input class="but" onClick="ChangeToDu()" type="button" value="转 换" name="">&nbsp;&nbsp;
     	结果:<span id="calculated_du"></span>
      </span>
    </div>
    <h4>经纬度转坐标</h4>
    <div>
      <span class="info3">
        度&nbsp;&nbsp;数:
        <input class="input" id="input_du" name="du" style="width: 150px" value="">&nbsp;&nbsp;
        <input class="but" onClick="ChangeToDFM()" type=button value="转 换" name="">&nbsp;&nbsp;
        结果:<span id="calculated_DFM"></span>
      </SPAN>
    </div>
    <script>
      //坐标转经纬度
      function ChangeToDu() {
        var d = document.getElementById("input_dfm1").value;
        var f = document.getElementById("input_dfm2").value;
        var m = document.getElementById("input_dfm3").value;

        var f = parseFloat(f) + parseFloat(m / 60);
        var du = parseFloat(f / 60) + parseFloat(d);
        document.getElementById("calculated_du").innerHTML = du;
      }
      //经纬度转坐标
      function ChangeToDFM() {
        var du = document.getElementById("input_du").value;
        var str1 = du.split(".");
        var du1 = str1[0];
        var tp = "0." + str1[1]
        var tp = String(tp * 60); //这里进行了强制类型转换
        var str2 = tp.split(".");
        var fen = str2[0];
        tp = "0." + str2[1];
        tp = tp * 60;
        var miao = tp;
        document.getElementById("calculated_DFM").innerHTML = du1 + "°" + fen + "'" + miao + "\"";
      }
    </script>
  </body>
</html>

附件:locationconvert.html

给我留言

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: