百度地图默认使用 BD09 坐标系。如果你的业务数据是国测局坐标(GCJ02,即高德、腾讯、谷歌中国地图所用坐标系),可以通过配置 coordType让地图直接接收 GCJ02 坐标,无需手动转换每一个坐标点。
需要在初始化地图前面配置参数 BMap.coordType。设置全局坐标系标识。这是全局默认值,一定要在创建地图之前执行,且在初次声明之后不要在运行期间修改。
BMap.coordType = BMAP_COORD_GCJ02;
设置全局坐标系之后,再进行初始化地图实例。
// 先声明坐标系BMap.coordType = BMAP_COORD_GCJ02;// 再初始化地图var map = new BMap.Map('container');
以上两步完成之后,地图内部绝大多数模块(折线、多边形、圆形、自定义覆盖物、检索、地理编码、定位、路径规划等)在处理坐标时都会读取这个全局值,自动将输入的 GCJ02 坐标转换为内部使用的 BD09 坐标,以及将内部坐标转换为 GCJ02 坐标返回给你。
// 初始化完成之后,可以使用 GCJ02 坐标设置视野map.centerAndZoom(new BMap.Point(116.404, 39.915), 15);// 之后所有坐标都按 GCJ02 传入,无需额外配置var marker = new BMap.Marker(new BMap.Point(116.404, 39.915));map.addOverlay(marker);
除了按以上的方式进行全局配置,单个功能也可以单独配置坐标系,通过options内传入
// 单独仅给Marker坐标设置为GCJ02坐标系var marker = new BMap.Marker(new BMap.Point(116.404, 39.915), {coordType: BMAP_COORD_GCJ02});map.addOverlay(marker);
上一篇
下一篇