高德坐标系转百度

155 阅读1分钟

之前使用这个工具转坐标,但是后续发现转换不太准确 比如:39.911232,116.470853 这个高德系坐标,直接查地图是当前位置 使用方法返回坐标116.4643719288675,39.9051948554639 用百度地图查的结果就不是当前位置,经纬度不太准确

const gcj2bdString = function(bdLat, bdLon) {
	try {
		var x_pi = 3.14159265358979324;
		var x = bdLon - 0.0065,
			y = bdLat - 0.006;
		var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);
		var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);
		var gcjLon = z * Math.cos(theta);
		var gcjLat = z * Math.sin(theta);
		return gcjLat + ',' + gcjLon;
	} catch (err) {
		console.log(err)
	}

}

使用了另一个工具

const gcj2bdString = function(lat, lng) {
	try {
		let x_PI = 3.14159265358979324 * 3000.0 / 180.0
		let z = Math.sqrt(lng * lng + lat * lat) + 0.00002 * Math.sin(lat * x_PI);
		let theta = Math.atan2(lat, lng) + 0.000003 * Math.cos(lng * x_PI);
		let bd_lng = z * Math.cos(theta) + 0.0065;
		let bd_lat = z * Math.sin(theta) + 0.006;
		return bd_lat + ',' + bd_lng
	} catch (err) {
		console.log(err)
	}
}

返回结果是39.91693390494561,116.47744341913783 这个经纬度就准确很多了 记录一下