百度地图API有两种坐标系,一种是百度经纬度,一种是摩卡托坐标系。在本章你将学会:
1、如何相互转换这两种坐标;
2、使用该坐标进行反地址解析;
3、坐标附近全部POI的查询;
4、计算两点间的距离。
------------------------------------------------------------------------------
最终画面效果图
百度地图API常用两种坐标系,一是球面坐标系,又称百度坐标,即point;第二就是平面坐标系,又称摩卡托坐标,即pixel。
为了方便用户调用,API中的参数大多为百度经纬度,又称球面坐标。而在后台计算时,为了加快运算速度,一般采取摩卡托坐标系,即平面坐标。(有了平面坐标,用户能自己快速而海量地计算两点的距离。)
1、百度经纬度和摩卡托坐标的相互转换
MercatorProjection类,通过MapType的getProjection方法获得实例。类参考:
百度经纬度转换为摩卡托(worldCoordinate.x和worldCoordinate.y就是平面坐标的x和y)
var projection1 = map.getMapType().getProjection();
var worldCoordinate = projection1.lngLatToPoint(pt);
摩卡托转换为百度经纬度(LngLat.lng和LngLat.lat就是经纬度)
var projection2 = map.getMapType().getProjection();
var LngLat = projection2.pointToLngLat(mctXY);
2、使用坐标进行反地址解析
由于百度地图API只支持百度经纬度的反地址解析,所以,必须先将摩卡托坐标转换为百度经纬度,再使用如下方法。
var gc = new BMap.Geocoder();
gc.getLocation(point, function(rs){
var addComp = rs.addressComponents;
alert(addComp.province + ", " + addComp.city &#