地理定位

地理定位

    Html5中geolocation API(地理定位)允许对我们喜欢的网站分享我们的位置信息。在开发中使用JS获取我们当前的位置坐标(经纬度)。
    geolocation 是基于navigator的一个新属性,我们创建一个地理定位的方式:var getlocation = navigator.geolocation;
    getCurrentPosition()是基于地理定位的一个方法,它可以让我们获取到我们当前的位置坐标。
//这里我们使用的是高德地图
<body>
<p id="p1">定位中p>
body>
<script>
    window.onload = getLocation;
    function getLocation(){
        var location = document.getElementById("p1");
        if(navigator.geolocation){
            navigator.geolocation.getCurrentPosition(function(position){
                var log = position.coords.longitude;//获取经度
                var lat = position.coords.latitude;//获取纬度
                location.innerHTML = "经度:" + log + "," + "纬度:" + lat;
            });
        }else{
            location.innerHTML = "该浏览器不支持地理定位";
        }
    }
script>
注意:(1)location是一个关键字,定义变量时不要用
      (2)当没有设置点击事件的时候,要页面加载就要调用函数。
出现的问题:获取到的坐标与实际位置有偏差,原因就是系统使用的是火星坐标。

    火星坐标:是一种国家保密插件,也叫做加密插件或者加偏或者SM模组,其实就是对真实坐标系统进行人为的加偏处理,按照特殊的算法,将真实的坐标加密成虚假的坐标,而这个加偏并不是线性的加偏,所以各地的偏移情况都会有所不同。而加密后的坐标也常被人称为火星坐标系统。

    怎么解决获取的火星坐标问题?
    通过正规地图公司(如:高德地图JS API,百度地图JS API),我们可以申请Key值(百度是AK),通过这些网站提供的密钥进行解析,从而可以获取到真正的无偏移的坐标值。

    注意:高德地图提供key值获取到的实际坐标,用百度地图坐标反查会有偏移。反过来一样,所以,我们以后咋开发的时候,使用哪个地图公司的key,就用哪个地图公司的地图

你可能感兴趣的:(地理位置,定位)