本帖最后由 湖畔科技 于 2019-6-6 13:55 编辑
1.加入convertor.js文件
- <div align="left"><script type="text/javascript" src="http://api.map.baidu.com/getscript?v=1.4"></script>
- <script type="text/javascript" src="http://dev.baidu.com/wiki/static/map/API/examples/script/convertor.js"></script></div>
复制代码
2.添加百度地图标注
- <div align="left">function loadMarker(x,y,oap_name){
- if(!x){return}
- //纠正gps偏差
-
- var iconv="../../../icons/access_point_b64.gif";
- var iconu="../../../icons/access_point_r64.gif";
- var iconSize = new BMap.Size(64, 64);//标注图片大小
- var offsetSize = new BMap.Size(32, 32);//偏移位
- //var point = new BMap.Point(x,y);
- var icon = new BMap.Icon(iconv,iconSize, {
- anchor:offsetSize
- });
- translateCallback = function (point) {
- map.clearOverlays();
- map.setCenter(point);
- var marker = new BMap.Marker(point, {icon:icon});
-
- marker.addEventListener("mouseover", function(){
- this.setIcon(new BMap.Icon(iconu,iconSize,{anchor:offsetSize}));
- });
-
- marker.addEventListener("mouseout", function () {
- this.setIcon(new BMap.Icon(iconv,iconSize,{
- anchor:offsetSize
- }));
- });
-
- map.centerAndZoom(point,16);
-
- map.addOverlay(marker);
-
- var gc = new BMap.Geocoder();</div><div align="left"> var infoWindow1=null;
- gc.getLocation(point, function(rs){
- var addComp = rs.addressComponents;
- infoWindow1 = new BMap.InfoWindow("<div style=‘margin-top: 13px;font-size:15px;color:red;font-weight:bold;‘>"+oap_name+"</div><div style=‘margin-top: 5px;font-size: 13px;‘>地址:"+addComp.province + addComp.city + addComp.district + addComp.street + addComp.streetNumber+"<br/>经度:"+x+"<br/>纬度:"+y+"</div>");
- marker1.openInfoWindow(infoWindow1);
- });
- marker.addEventListener("click", function(){this.openInfoWindow(infoWindow1);});
- }
-
- BMap.Convertor.translate(new BMap.Point(x, y), 0, translateCallback);
- }</div>
复制代码
3.如果是单片机上如何纠偏呢?
很多人在做GPS实验的时候都会遇到这的情况GPRMC里面的经纬度在google地图里面查询不准确,其实这样的情况是你没有分清楚 度和度分秒。
GPRMC里面出来的是度分秒格式,但是在google里面要用到的是度的形式,下面我们来给大家分析下 。
看我们得到经纬度如下图
很多人看到了 A字母后面的就是经纬度
将经纬度输入google地图发现位置和自己的位置差了几千米以上 其实你错了 ,
我们得到的GPRMC里面的格式是 度。分' 秒" 格式 但是在google里面是 度。的格式 所以需要转换下。
我们再输入GPRMC得到的 度分秒格式 ,后面的就是度的形式 ,所以我们输入后面的就可以了。
================================================================================
笔记:
GPS->2604.22321 = 26度04分13.3926秒 (0.22321*60秒) = 26.070386833度 (26+04/60 + 13.3926/3600)
|