外观
外观
怡然
610字约2分钟
地图
2024-07-17
相关信息
在地图开发中的散点图出现,地图打点位置与实际位置出现偏差的情况,从整体情况来看,打点位置与实际位置相比偏西南方法,确定为不同坐标使用的坐标系不同导致的偏差。该偏差很难通过几个点的位置计算得出转换方式,需要地图方提供正确的转换方式。 地球上同一个地理位置的经纬度,在不同的坐标系中,会有少于偏移,国内目前常见的坐标系主要分为三种:
AMap.convertFrom(lnglat,type,cbk)
var gps = [116.3, 39.9]; //需要转换的gps类型的坐标
//参数说明:需要转换的坐标,需要转换的坐标类型,转换成功后的回调函数
AMap.convertFrom(gps, "gps", function (status, result) {
//status:complete 表示查询成功,no_data 为查询无结果,error 代表查询错误
//查询成功时,result.locations 即为转换后的高德坐标系
if (status === "complete" && result.info === "ok") {
var lnglats = result.locations; //转换后的高德坐标 Array.<LngLat>
console.log(lnglats);
}
});
参数 | 说明 |
---|---|
lnglat | 转换的坐标或者坐标组。 |
type | 支持"gps ":GPS 原始坐标、"baidu ":百度经纬度坐标、"mapbar ":图吧经纬度坐标。 |
cbk | 转换成功后的回调函数。 |
var convertor = new BMapGL.Convertor();
var pointArr = [116.3, 39.9];
convertor.translate(pointArr, COORDINATES_GCJ02, COORDINATES_BD09, translateCallback)
/**
* 坐标常量说明:
* COORDINATES_WGS84 = 1, WGS84坐标
* COORDINATES_WGS84_MC = 2, WGS84的平面墨卡托坐标
* COORDINATES_GCJ02 = 3,GCJ02坐标
* COORDINATES_GCJ02_MC = 4, GCJ02的平面墨卡托坐标
* COORDINATES_BD09 = 5, 百度bd09经纬度坐标
* COORDINATES_BD09_MC = 6,百度bd09墨卡托坐标
* COORDINATES_MAPBAR = 7,mapbar地图坐标
* COORDINATES_51 = 8,51地图坐标
*/
translateCallback = function (data){
if(data.status === 0) {
var marker = new BMapGL.Marker(data.points[0]);
bm.addOverlay(marker);
var label = new BMapGL.Label("转换后的百度标注(正确)",{offset:new BMapGL.Size(20,-10)});
marker.setLabel(label); //添加百度label
bm.setCenter(data.points[0]);
}
}