【百度 JavaScript API v3.0】BMapLib.DrawingManager 鼠标绘制

地图上鼠标绘制

需求

使用工具new BMapLib.DrawingManager 在地图上绘制点线面

技术点

官网地址: JavaScript API - 快速入门 | 百度地图API SDK

开发文档:百度地图JSAPI 3.0类参考

实现

第一步:在public的index.html中引入

<script src="http://api.map.baidu.com/api?v=3.0&ak=ak值" type="text/javascript"></script>
<script src="https://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.js"  type="text/javascript"></script>
<link href="https://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.css"  rel="stylesheet" />

第二步:组件中使用

<template>
  <div>
    <div id="map"></div>
    <div id="result">
      <el-button @click="clear()">清除覆盖物</el-button>
    </div>
  </div>
</template>

<script>

export default {
  data() {
    return {
      map: null,
	  drawingManager: null,
	  overlays: []
    };
  },
  mounted() {
    this.map = new BMap.Map("map");
    this.map.centerAndZoom(new BMap.Point(117.06 ,36.67), 17);
    this.map.enableScrollWheelZoom();
    this.map.enableMapClick = false; // 底图不可以点击
      
    //实例化鼠标绘制工具
    var styleOptions = {
        strokeColor:"red",    //边线颜色。
        fillColor:"red",      //填充颜色。当参数为空时,圆形将没有填充效果。
        strokeWeight: 3,       //边线的宽度,以像素为单位。
        strokeOpacity: 0.8,	   //边线透明度,取值范围0 - 1。
        fillOpacity: 0.6,      //填充的透明度,取值范围0 - 1。
        strokeStyle: 'solid' //边线的样式,solid或dashed。
    }
    this.drawingManager = new BMapLib.DrawingManager(this.map, {
      isOpen: false, //是否开启绘制模式
      enableDrawingTool: true, //是否显示工具栏
      drawingToolOptions: {
        anchor: BMAP_ANCHOR_TOP_RIGHT, //位置
        offset: new BMap.Size(5, 5), //偏离值
        drawingModes : [ BMAP_DRAWING_CIRCLE, BMAP_DRAWING_POLYGON] // 可见的操作选项
      },
      circleOptions: styleOptions, //圆的样式
      polylineOptions: styleOptions, //线的样式
      polygonOptions: styleOptions, //多边形的样式
      rectangleOptions: styleOptions //矩形的样式
    });

    //添加鼠标绘制工具监听事件,用于获取绘制结果
    this.drawingManager.addEventListener('overlaycomplete', this.complete);  
  },
  methods: {
    // 绘制完成
    complete(e) {
      this.overlays.push(e.overlay);
    },

    // 清除所有覆盖物
    clear() {
      // var overLayers = this.map.getOverlays();
      for(var i = 0; i < this.overlays.length; i++){
        this.map.removeOverlay(this.overlays[i]);
      }  
    }
  }
}
</script>

<style lang="less">
#map {
  width: 300px;
  height: 300px;
  margin-top: 50px;
}
</style>

解析

鼠标绘制图形样式

var styleOptions = {
  strokeColor:"red",    //边线颜色。
  fillColor:"red",      //填充颜色。当参数为空时,圆形将没有填充效果。
  strokeWeight: 3,       //边线的宽度,以像素为单位。
  strokeOpacity: 0.8,	   //边线透明度,取值范围0 - 1。
  fillOpacity: 0.6,      //填充的透明度,取值范围0 - 1。
  strokeStyle: 'solid' //边线的样式,solid或dashed。
}

鼠标绘制工具 

this.drawingManager = new BMapLib.DrawingManager(this.map, {
  isOpen: false, //是否开启绘制模式
  circleOptions: styleOptions, //圆的样式
});

鼠标绘制完成

this.drawingManager.addEventListener('overlaycomplete', this.complete);
// 绘制完成
complete(e) {
  this.overlays.push(e.overlay);
},

清除覆盖物

<div id="result">
  <el-button @click="clear()">清除覆盖物</el-button>
</div>
clear() {
  // var overLayers = this.map.getOverlays();
  for(var i = 0; i < this.overlays.length; i++){
    this.map.removeOverlay(this.overlays[i]);
  }  
}

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在百度地图JavaScript API v3.0中添加GeoJSON,可以按照以下步骤进行操作: 1. 首先,确保已经引入了百度地图APIJavaScript文件,例如: ```html <script type="text/javascript" src="http://api.map.baidu.com/api?v=3.0&ak=your_ak"></script> ``` 其中,`your_ak`需要替换为你的百度地图API密钥。 2. 创建一个地图实例,例如: ```javascript var map = new BMap.Map("mapContainer"); ``` 其中,`mapContainer`是包含地图的HTML元素的ID。 3. 设置地图的中心点和缩放级别,例如: ```javascript var point = new BMap.Point(116.404, 39.915); // 设置地图中心点坐标 map.centerAndZoom(point, 12); // 设置地图缩放级别 ``` 4. 创建一个GeoJSON图层,例如: ```javascript var geojsonLayer = new BMapGL.GeoJSONLayer({ map: map, enableEditing: false, // 是否启用编辑模式,false表示禁用 styleOptions: { strokeColor: "blue", // 设置GeoJSON图层的边线颜色 fillColor: "yellow", // 设置GeoJSON图层的填充颜色 strokeWeight: 2, // 设置GeoJSON图层的边线宽度 fillOpacity: 0.5 // 设置GeoJSON图层的填充透明度 } }); ``` 5. 通过Ajax请求获取GeoJSON数据,并在回调函数中添加到图层中,例如: ```javascript $.getJSON("your_geojson_url", function(data) { geojsonLayer.addData(data); }); ``` 其中,`your_geojson_url`需要替换为你的GeoJSON数据的URL。 6. 最后,添加图例控件,例如: ```javascript var legendControl = new BMapGL.Control({anchor: BMAP_ANCHOR_TOP_LEFT}); legendControl.addEventListener("viewchanged", function() { // 图例控件viewchanged事件处理函数 }); map.addControl(legendControl); ``` 以上就是使用百度地图JavaScript API v3.0添加GeoJSON的步骤。希望能帮到你!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宾果的救星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值