通过GPS得到的经纬度数据,如果不加处理直接链接百度地图API的话,会出现偏差的问题,解决这个偏差可以将GPS数据处理成百度地图的坐标,转换过程是先将GPS数据转换为GOOGLE地图坐标,然后再将google地图坐标转换为百度地图坐标,具体代码如下
#include <iostream>
#include <cmath>
using namespace std;
const double pi = 3.14159265358979324;
const double a = 6378245.0;
const double ee = 0.00669342162296594323;
const double x_pi = 3.14159265358979324 * 3000.0 / 180.0;
struct Loc
{
double Lon; //坐标的经度
double Lat; //坐标的纬度
};
double transformLat(double x,double y); //将GPS坐标转换为google纬度坐标辅助函数
double transformLon(double x,double y); //将GPS坐标转换为google经度坐标辅助函数
Loc bd_encrypt(Loc gg);//将谷歌坐标转换为百度坐标
Loc transform(Loc gps);//将GPS坐标转换为google地图
int main()
{
Loc demo,gg,bd;
demo.Lat = 22.502412986242;
demo.Lon = 113.93832783228;
gg = transform(demo);
cout<<gg.Lat<<" "<<gg.Lon<<endl;
bd = bd_encrypt(gg);
cout<<bd.Lat<<&