分享

HTML5 GPS定位&百度地图API

 MOZHERV 2016-04-17
这几天再研究地理定位,做了一些手记,和大家分享一下~
我们有时会有这样的开发需求:获取到当前用户的位置,然后为用户提供一些服务。
此时可以采用两种定位方式,一种是用GPS的定位,然后将定位到的经纬度传递到百度地图的API接口当中。另一种方法是利用百度API接口,使用IP地址定位,然后使用IP地址获取到的经纬度,传递到百度地图API接口中。
自己尝试使用了这两种方式进行定位。相对来说,IP地址定位,偏差比较大。GPS定位虽然还可以,但是也不足够精确。产生比较大偏差的原因有可能是以下几点造成的:
1、GPS一打开就进行了定位。当GPS没有搜到足够的卫星,或者信号不好时数据是不对的。
2、没有做GPS坐标到百度坐标的转换——这个原因也是不精确的主要原因

那么在拿到GPS定位的经纬度之后,为了让定位精确,我们需要进行“纠偏”。此时也就是所谓的“坐标转换”。坐标转换的方法有两种,一种是调用外部网站提供的纠偏方法,另外一种是使用百度自己的API。
方法1:外部网站纠偏方法
可以访问http:///网站,然后申请测试key,按照它给出的链接既可以获取到纠偏后的经纬度。
方法2:利用百度自己的API
不多说,直接上代码:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=申请到的百度的密钥"></script>
<title>GPS转百度</title>
</head>
<body>
<div id="allmap"></div>
</body>
</html>
<script type="text/javascript">
// 百度地图API功能
//GPS坐标
var xx = 116.397428;
var yy = 39.90923;
var gpsPoint = new BMap.Point(xx,yy);

//地图初始化
var bm = new BMap.Map("allmap");
bm.centerAndZoom(gpsPoint, 15);
bm.addControl(new BMap.NavigationControl());

//坐标转换完之后的回调函数

//此处显示的就是纠偏后的经纬度
translateCallback = function (point){
var marker = new BMap.Marker(point);
bm.addOverlay(marker);
bm.setCenter(point);
}
BMap.Convertor.translate(gpsPoint,0,translateCallback); //真实经纬度转成百度坐标
</script>


附加资料:
中国常用的WGS1984的经纬度坐标,1秒相当于33米。具体如下:
经度1度=85.39km
经度1分 = 1.42km
经度1秒 = 23.6m
纬度1度 = 大约111km
纬度1分 = 大约1.85km
纬度1秒 = 大约30.9m

欢迎互相沟通学习交流~独行冰海

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多