使用百度地图JavaScript API遇到的暗坑


一、介绍

项目中使用了微信定位,由于使用了百度地图JavaScript API来把微信坐标转换成百度坐标,在使用百度坐标转换成百度中文地址,遇到一些郁闷的坑,在这里面介绍一下。

二、说明

百度API官网地址:http://lbsyun.baidu.com/index.php?title=jspopular

js中把微信坐标转换成百度坐标

var longitude = 116.40718;  // 微信经度
var latitude = 39.978207; 	// 微信纬度

console.log("微信经度:"+longitude);
console.log("微信纬度:"+latitude);

// 转换成百度地图坐标和地址
var lng = '';	//百度经度
var lat = '';		//百度纬度
var address = '';	//百度地址
var convertor = new BMap.Convertor();
var ggPoint = new BMap.Point(longitude, latitude);
var pointArr = [];
pointArr.push(ggPoint);
convertor.translate(pointArr, 1, 5, function (data){
	if(data.status === 0) {
    	lng = data.points[0].lng;
    	lat = data.points[0].lat;
    	console.log("调取转换坐标后:百度经度:"+lng);
		console.log("调取转换坐标后:百度纬度:"+lat);
		
		var myGeo = new BMap.Geocoder();
		var point = new BMap.Point(lng, lat);
		
		myGeo.getLocation(point, function(rs){
			var addComp = rs.addressComponents;
			address = addComp.province+addComp.city+addComp.district+addComp.street+addComp.streetNumber;
			console.log("调取转换地址后:百度经度:"+rs.point.lng);
			console.log("调取转换地址后:百度纬度:"+rs.point.lat);
			console.log("百度地址:"+address);
		});
	}
});

看浏览器控制台

上图1是我微信坐标转换成百度坐标的时候打印出来的

上图2是我调取百度转换百度中文地址的时候打印出来的(逆地址解析)

明显2在我调用转换地址的时候,百度自动把我的精度被截取了,导致转换百度中文地址的时候,只显示到了区。

所以建议大家在使用百度地图JavaScript API注意精度的问题,如果有需要精准度还是使用百度web服务API来进行转换,百度web服务API,百度web服务API可以同时返回百度坐标和百度中文地址。