打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

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

那么在拿到GPS定位的经纬度之后,为了让定位精确,我们需要进行“纠偏”。此时也就是所谓的“坐标转换”。坐标转换的方法有两种,一种是调用外部网站提供的纠偏方法,另外一种是使用百度自己的API。
方法1:外部网站纠偏方法
可以访问http://ditujiupian.com/网站,然后申请测试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

欢迎互相沟通学习交流~独行冰海
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
真实经纬度(gps)转成百度坐标的js方法
GPS坐标换算为百度坐标
百度地图API详解之地图坐标系统
AngularJS进阶(十九)在AngularJS应用中集成百度地图实现定位功能
百度地图API的IP定位城市和浏览器定位(转)
重温---HTML5高级---地理定位
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服