在最近的一个项目中使用过百度地图API的Javascript开发,
发现了一些问题,在这里作为自己的Knowledge积累,写下来。
问题:
手动绘图模式下(DrawingManager),
覆盖物Polyline,Polygon的绘画模式中,如果没有在options中指定enableEditing属性为True,
而是在手动绘画完成后,生成的覆盖物的对象上调用enableEditing方法改变编辑属性,
则生成的对象在地图上编辑后(拖动编辑线框或者编辑锚点的操作),再移动地图时,覆盖物的边框会被还原到编辑前的位置上,
但是编辑的锚点依然停留在编辑后的位置上。
版本:
百度地图API JavaScript 开源库
Baidu Map API 1.4
解决方法:
1.如果需要在绘画完成后让覆盖物进入编辑状态,需要在绘画前,预先指定options中编辑模式属性【enableEditing:true】
2.如果需要在绘画完成后覆盖物不进入编辑状态,而是在选中这个覆盖物时进入编辑状态,
(1)预先指定options的属性【enableEditing:false】(默认值);
(2)绑定覆盖物对象的click事件,在click事件中拿到当前覆盖物对象,在当前的覆盖物上再绘画一个新的覆盖物对象new,让所有的线框与之前的覆盖物完全重合;
(3)绑定覆盖物对象new的lineupdate事件,当改变覆盖物对象new时,原先的覆盖物对象也跟着更新;
(4)当鼠标点击覆盖物对象new以外的地方时,关闭覆盖物对象new的编辑模式,并且删除旧的覆盖物。
百度地图应用经验(一),码迷,mamicode.com
时间: 2024-11-06 03:42:08