管理员
最后登录1970-1-1
在线时间 小时
注册时间2013-5-3
|
发表于 2016-11-23 11:08:24
|
显示全部楼层
1.stm32端解码得的是 度.分 格式、上位机蓝框显示的是 度.度 的格式。需要化单位
2.stm32端和上位机显示的坐标都是 wsg84 坐标系,百度地图用的都是火星坐标系
使用百度经纬度反查地点之前,需要先用百度地图提供的javascript api 转成火星坐标再定位。
GPS单位转换:
---------------液晶屏输出的单位 转 上位机的单位-----------------------------------------------------
/*经纬度转换 : 输入nmea的 度.分 xx.xxxx 格式,输出 度.度 xxxxxx */
double DegreeConvert(double sDegree)
{
double dDegree;
if (sDegree == 0)return 0;
int integer = (int)sDegree;
double decimal = sDegree - (int)sDegree;
double min = integer % 100;
int hour =(int) (integer / 100);
dDegree = (double)hour + (double)(min / 60) + (double)(decimal / 60);
return dDegree;
}
火星坐标API转换,这些是百度的javascript api,具体作用查百度文档:
-------------------------------------------------------------
var gpsPoint = new BMap.Point(Longitude, Latitude);
//gps坐标纠偏
BMap.Convertor.translate(gpsPoint, 0, translateCallback); //真实经纬度转成百度坐标
//坐标转换完之后的回调函数
translateCallback = function (point) {
map.clearOverlays();
var marker = new BMap.Marker(point);
map.addOverlay(marker);
map.setCenter(point);
// marker.setAnimation(BMAP_ANIMATION_BOUNCE); //跳动的动画
}
----------------------------------------------------------------------------------------
|
|