C++实现谷歌地图上GPS偏移纠正代码

由于国家规定,在使用谷歌地图时,GPS会使用一个保密的算法进行偏移。此偏移算法在互联网上是公开的秘密。可以使用谷歌搜索"wgtochina_lb"。以下代码实现了GCJ-02到WGS-84的转换。可以在谷歌地图上验证过。
MapFix.h

class CMapFix
{
public:
	static CMapFix* getInstance()
	{
		if (m_pInstance == NULL)
		{
			m_pInstance = new CMapFix();
		}
		return m_pInstance;
	}
private:
	CMapFix();
private:
	double m_casm_f;
	double m_casm_rr;
	double m_casm_t1;
	double m_casm_t2;
	double m_casm_x1;
	double m_casm_x2;
	double m_casm_y1;
	double m_casm_y2;
	static CMapFix* m_pInstance;
public:
	//纠偏计算
	//dSrcLat 纠偏之前的纬度,dSrcLong纠偏之前的经度
	//dDstLat 纠偏之后的纬度,dSrcLong纠偏之后的经度(这两个作为返回值使用)
	void GPSFix(double dSrcLat, double dSrcLong, double& dDstLat, double& dDstLong);
private:
	struct MapPoint
	{
		double dLatitude;
		double dLongitude;
	};
private:
	void IniCasm(double w_time, double w_lng, double w_lat);
	double random_yj();
	double Transform_jy5(double x, double xx);
	double Transform_jyj5(double x, double yy);
	double Transform_yj5(double x, double y);
	double Transform_yjy5(double x, double y);
	MapPoint* wgtochina_lb(int wg_flag, int wg_lng, int wg_lat, int wg_heit, int wg_week, int wg_time);
	double yj_sin2(double x);
};

MapFix.cpp

#include "MapFix.h"
#include <math.h>

CMapFix* CMapFix::m_pInstance = NULL;
CMapFix::CMapFix()
{
	m_casm_f = 0.0;
	m_casm_rr = 0.0;
	m_casm_t1 = 0.0;
	m_casm_t2 = 0.0;
	m_casm_x1 = 0.0;
	m_casm_x2 = 0.0;
	m_casm_y1 = 0.0;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值