开发项目时用到了鼠标绘制工具,绘制多边形时,鼠标离开地图后,地图会自动平移。用close方法也停止不了。

看下源码中这样的代码:

/*** 开启鼠标到地图边缘,自动平移地图*/Mask.prototype.enableEdgeMove = function() {this._enableEdgeMove = true;}/*** 关闭鼠标到地图边缘,自动平移地图*/Mask.prototype.disableEdgeMove = function() {clearInterval(this._edgeMoveTimer);this._enableEdgeMove = false;}

发现在绘制开始时会调用mask.enableEdgeMove (); 结束时会调用mask.disableEdgeMove();还有其他地方调用。总之就是这里的原因啦!我是这样改的:

/*** 鼠标移动过程的事件*/var mousemoveAction = function(e) {//自定义---如果超出范围,禁止地图自动平移if(me._outRange){mask.disableEdgeMove();return;}overlay.setPositionAt(drawPoint.length - 1, e.point);}

outRange是我自定义的,标志鼠标是否超出绘制范围。如果超出范围,就禁止地图自动平移。这样就可以解决我的问题了。时间有限,就先这么着了。

VUE页面相关代码:

mounted(){var _this=this;_this.drawingManager = new BMapLib.DrawingManager(_this.map, {isOpen: true, //是否开启绘制模式enableDrawingTool: false, //是否显示工具栏drawingToolOptions: {anchor: BMAP_ANCHOR_TOP_RIGHT, //位置offset: new BMap.Size(5, 5), //偏离值drawingModes: [BMAP_DRAWING_POLYGON]},polygonOptions: _this.styleOptions, //多边形的样式outRange:false,hasLabel:false});_this.drawingManager.enableCalculate();_this.drawingManager.setDrawingMode(BMAP_DRAWING_POLYGON);
},methods:{//添加多边形层并显示,如果添加了或修改了某网格,则所有子网格重新画一遍drawPolygon(){var child="";for(var c=0;c<this.parentArea.children.length;c++){child=this.parentArea.children[c];var ply = new BMap.Polygon(child.points, { strokeWeight: 1, strokeColor: child.gridcolor, fillOpacity: 0.2, fillColor: child.gridcolor }); //建立多边形覆盖物ply.id=child.Id;ply.addEventListener("mouseover", this.mouseover);ply.addEventListener("mouseout", this.mouseout);if(this.id==child.Id){this.companyMap.acreage=child.acreage;this.companyMap.points= child.points;ply.setFillColor(child.gridColor);this.drawingManager.close();this.drawPly=ply;}this.map.addOverlay(ply);this.childPlyArr.push(ply);}},//子网格鼠标移入事件,如果正在绘制,并且绘制模式为选中状态mouseover(evt) {if(this.drawingManager._isOpen && this.drawingManager.getDrawingMode()!='marker'){if(!this.drawingManager._outRange){this.drawingManager.outRangeAction();}}},mouseout(evt) {if(this.drawingManager._isOpen && this.drawingManager.getDrawingMode()!='marker'){if(this.drawingManager._outRange){this.drawingManager.inRangeAction();}}},//绘制完成overlaycomplete(e){if(e.calculate==null){alert("面积为0,请重绘");this.map.removeOverlay(e.overlay);return;}//如果结果的点不在区域内,则删除并出范提示超围var pointsArr=e.overlay.getPath();//保存在数组库var inrange=true;for(var i=0;i<pointsArr.length;i++){//判断点是否在父网格范围内,不在则超出范围for(var j=0;j<this.parentPly.length;j++){inrange=BMapLib.GeoUtils.isPointInPolygon(pointsArr[i], this.parentPly[j]);if(inrange)break;}}if(!inrange){alert("超出范围");this.map.removeOverlay(e.overlay);return;}this.drawPly=e.overlay;var resultPoints="";for(var i=0;i<pointsArr.length;i++){var end=(i==pointsArr.length-1)?"":";";resultPoints+=pointsArr[i].lng+","+pointsArr[i].lat+end;}this.companyMap.points=resultPoints;this.companyMap.acreage=e.calculate;//面积}
}

百度地图 鼠标绘制工具BUG修复(地图自动平移)相关推荐

  1. js百度地图鼠标绘制工具条库

    本篇文章是介绍百度地图鼠标绘制工具条库基本使用 百度地图的覆盖物的编辑类参考:[鼠标绘制工具条库](http://api.map.baidu.com/library/DrawingManager/1. ...

  2. 百度地图 -- 鼠标绘制工具DrawingManager

    优先附上DrawingManager参考的API文档: http://api.map.baidu.com/library/DrawingManager/1.4/docs/symbols/BMapLib ...

  3. 百度地图之鼠标绘制工具条库(开源库)

    百度地图开发常用网站 1.百度地图开放平台 http://lbsyun.baidu.com/ 2.百度地图 Javascript API JavaScript API v3.0 http://lbsy ...

  4. 百度地图的鼠标绘制工具

    <!--加载鼠标绘制工具--> <script type="text/javascript" src="http://api.map.baidu.com ...

  5. 鼠标绘制工具加是否超出范围判断

    初始化鼠标绘制工具的代码: //实例化鼠标绘制工具_this.drawingManager = new BMapLib.DrawingManager(_this.addMap, {isOpen: tr ...

  6. 百度地图鼠标绘制获取坐标点

    开发有时需要在百度地图上拾取多个坐标,利用官方上的开源库,改造,在页面上打点或者画框获取坐标,如下图 选择工具 选择工具后在地图上画好,后就可以滚动到页面下方复制坐标点了,如下图 源码查看:https ...

  7. wms地图绘制工具_移情地图,了解用户需求的利器

    如果你想打造一款成功的产品,对你的用户有一个良好的了解是至关重要的.虽然用户体验设计师有许多技能可以帮助他们发展这种理解,但有一种关键技能有很多优势,它称为移情地图. User-Experience ...

  8. wms地图绘制工具_地图空间分析工具MapViewer下载-地图空间分析(MapViewer)下载v8.4.406 官方版-西西软件下载...

    地图空间分析工具MapViewer是一款地图空间制作软件,可让用户轻松制作出版品质的专题地图.使用最直观的功能和特性精确显示数据分布.用户的数据是独一无二的,用户需要最好的地图绘制软件!有对这款软件感 ...

  9. SRPG游戏开发(五)第三章 绘制地图 - 二 绘制一张简单地图

    返回目录 第三章 绘制地图 一 导入素材 点击进入 二 绘制一张简单地图 这一节我们来看如何绘制一张地图. 1     新建Grid与Tilemap 在Hierarchy面板中,点击Create/2D ...

最新文章

  1. 深度学习中的20种卷积
  2. Win10启动盘制作工具
  3. 转载CSDN博文精选:Android系列开发博客资源汇总
  4. python使用全局变量的坑,要使用global
  5. java中的几个集合类
  6. [javax.validation]验证
  7. 【用电量预测】基于matlab SVM用电量预测【含Matlab源码 103期】
  8. MySQL中的LIMIT 关键字
  9. 使用计算机制图的心得,学习cad制图心得体会
  10. 单细胞测序技术(single cell sequencing)
  11. 搭建自己的框架WedeNet(一)
  12. Web 中servlet连接出现404路径错误 //Servlet出现404的解决方法
  13. 计算机网络中链路是指什么意思,什么是计算机网络中的上行链路端口?
  14. 记参加Microsoft Ignite 大会和北京CSDN创作者之夜
  15. ubuntu18.4解决问题: Installation failed. See log at /var/log/cuda-installer.log for details.
  16. php 模态框效果,超酷的模态框效果 - Nifty
  17. FPGA--OV7725摄像头采集与VGA显示实验--1--OV7725使用与驱动协议
  18. 净误差与遗漏为负值的含义_为什么遗漏与误差项为负反映了去向不明的资本外逃?...
  19. 图片文件损坏如何修复?只需这样操作
  20. 中科院oracle,《Oracle 10G 系统教程 中科院培训老师讲授》

热门文章

  1. ocv特性_锂离子电池的三大特性分析
  2. MiniGUI原理分析GAL
  3. mysql backtrace_是什么导致Linux 64位上的backtrace()崩溃(SIGSEGV)
  4. 5G系统新型网络架构
  5. 经验分享!java程序员面试十多家公司后的经验心得
  6. 005.Python制作客户端截屏通过合宙ESP32-C3投屏到0.96OLED
  7. Linux查看DNS服务器及设置DNS服务器的方法
  8. l7sa008b故障代码_美国凯利冷机故障码表
  9. ABB 120 六轴机械手臂编程调试(一)
  10. 计算机房的网络化管理,学校计算机房的设计与管理