vue结合百度地图绘制多边形

Posted caoxen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue结合百度地图绘制多边形相关的知识,希望对你有一定的参考价值。

一、安装百度地图

npm install vue-baidu-map --save
// 或者
yarn install vue-baidu-map

二、在main.js中引用

import BMap from vue-baidu-map

Vue.use(BaiduMap, 
  // ak 是在百度地图开发者平台申请的密钥 详见 http://lbsyun.baidu.com/apiconsole/key */
  ak: YOUR_APP_KEY
)

三、看一下具体代码吧

  1 <template>
  2   <div class="mapbox">
  3     <baidu-map
  4       :center="center"
  5       :zoom="zoom"
  6       :map-click="false"
  7       @mousemove="syncPolygon"
  8       @ready="handler"
  9       style="height:800px"
 10       @click="paintPolygon"
 11       @rightclick="newPolygon"
 12     >
 13       <bm-polygon
 14         :path="path"
 15         v-for="path of polygonPath.paths"
 16         :key="path.toString()"
 17         stroke-color="blue"
 18         fill-color="red"
 19         :fill-opacity="0.8"
 20         :stroke-opacity="0.5"
 21         :stroke-weight="2"
 22         @click="alertpath"
 23       />
 24       <bm-control>
 25         <button @click="toggle(‘polygonPath‘)"> polygonPath.editing ? ‘停止绘制‘ : ‘开始绘制‘ </button>
 26       </bm-control>
 27     </baidu-map>
 28   </div>
 29 </template>
 30 
 31 <script>
 32 export default 
 33   name: Polygon,
 34   data () 
 35     return 
 36       haha: 百度地图,
 37       center:  lng: 116.412732, lat: 39.911707 ,
 38       zoom: 13,
 39       polygonPath: 
 40         editing: false,
 41         paths: [] // 绘制完成后的经纬度,其实是在画的时候动态push的,因为在点击的时候触发了 paintPolygon 函数
 42       
 43     
 44   ,
 45   mounted: function () 
 46   ,
 47   methods: 
 48     handler ( BMap, map ) 
 49       console.log(BMap, map)
 50       map.enableScrollWheelZoom(true)
 51       // map.centerAndZoom(‘青岛市‘, 13)
 52     ,
 53     getClickInfo (e) 
 54       console.log(e.point.lng)
 55       console.log(e.point.lat)
 56     ,
 57     // 开启多边形绘制
 58     toggle (name) 
 59       this[name].editing = !this[name].editing
 60       // 在这里做一步判断,如果有路径且开启绘制就把原来的路径清空
 61       if (this.polygonPath.paths && this.polygonPath.editing) 
 62         this.polygonPath.paths = []
 63       
 64     ,
 65     // 鼠标移动时
 66     syncPolygon (e) 
 67       if (!this.polygonPath.editing) 
 68         return
 69       
 70       const  paths  = this.polygonPath
 71       if (!paths.length) 
 72         return
 73       
 74       const path = paths[paths.length - 1]
 75       if (!path.length) 
 76         return
 77       
 78       if (path.length === 1) 
 79         path.push(e.point)
 80       
 81       this.$set(path, path.length - 1, e.point)
 82     ,
 83     // 鼠标左键点击时往路径里push一个点
 84     newPolygon (e) 
 85       if (!this.polygonPath.editing) 
 86         return
 87       
 88       // 当开始绘制后把按钮调回开始绘制状态,防止绘制多个图形
 89       this[polygonPath].editing = !this[polygonPath].editing
 90       const  paths  = this.polygonPath
 91       if (!paths.length) 
 92         paths.push([])
 93       
 94       const path = paths[paths.length - 1]
 95       path.pop()
 96       if (path.length) 
 97         paths.push([])
 98       
 99     ,
100     // 鼠标右键多边形绘制完成
101     paintPolygon (e) 
102       if (!this.polygonPath.editing) 
103         return
104       
105       const  paths  = this.polygonPath
106       !paths.length && paths.push([])
107       paths[paths.length - 1].push(e.point)
108     ,
109     alertpath (e) 
110       console.log(e.currentTarget.so)
111       console.log(this.polygonPath.paths[0])
112     
113   
114 

 

以上是关于vue结合百度地图绘制多边形的主要内容,如果未能解决你的问题,请参考以下文章

百度地图实现鼠标绘制多边形并获取所有点坐标

百度地图中拖拽地图后,多边形消失的问题

Vue2.0与 [百度地图] 结合使用———vue+webpack+axios+百度地图实现组件之间的通信

百度地图判断点是否在不规则多边形内部

在百度地图上手绘了一个多边形,随便用鼠标点击地图获取改点坐标,并判断是不是属于在手绘的多边形内

如何将echarts和百度地图结合