![](/uploads/image/0267.jpg)
vue中使⽤百度地图vue-baidu-map进⾏构建多边形时的如何进⾏map实例调⽤ 和新。。。
1.在vue中使⽤百度地图不像是在js中,在我做的过程中遇到最⼤的问题就是不知道如何调⽤map实例,不像在JS中⾃⼰new⼀个map实例对象,在vue中⼀定要去创建@ready所对应的⽅法,⽅法名随便取,然后在⽅法中就得到map实例,接着赋值给data中的map,就可以在其他地⽅调⽤了。要在⽅法中传参数{BMap, map}才能承接,但在@ready中的⽅法不必传参,只有有了map实例,后⾯的其他操作才好进⾏。 handler({BMap, map}){
//只有在这个⽅法⾥才能拿到map实例,后⾯才能执⾏删除操作
console.log(BMap, map)
山西阳泉旅游景点大全
let _this =this
this.map = map
}
我这⾥是全局注册将⼀次性引⼊百度地图组件库的所有组件。所以在页⾯上就没有引⼊了,如果是局部注册的话需要进⾏引⼊
import BaiduMap from'vue-baidu-map/components/map/Map.vue'
还有我这边⽤的是Antd组件,如果是其他的如bootstrap等需要改⼀下,不然可能这些li的样式不对
<template>
<page-layout title="基础详情页">
<a-card>
<baidu-map class="map"ref="map":center="center":zoom="15":scroll-wheel-zoom="true"@ready="handler">
<bm-polygon class="polygon":path="polygonPath"@lineupdate="updatePolygonPath"fillColor="#F56C6C":editing="edit"/>
</baidu-map>
<ul class="drawing-panel">上海滨江公园壹号
<li.Button class="btn"@click="createRail">新建</li.Button>
<li.Button class="btn"@click="editRail">编辑</li.Button>
<li.Button class="btn"@click="clearRail">清除</li.Button>
<li.Button class="btn"@click="saveRail">保存</li.Button>
</ul>
<div id="container"></div>
</a-card>
</page-layout>
</template>
<script>
import DetailList from'../../components/tool/DetailList'
import PageLayout from'../../layouts/PageLayout'
export default{
name:'BasicDetail',
data(){
return{
center:{lng:119.32, lat:26.07},
polygonPath:[
{lng:119.321437,lat:26.067988},
{lng:119.34978048664546, lat:26.066239294066676},
{lng:119.33585576560436, lat:26.07754666038478}
]
,
edit:false,
map:{},
},
methods:{
handler({BMap, map}){//只有在这个⽅法⾥才能拿到map实例,后⾯才能执⾏删除操作
console.log(BMap, map)西双版纳周边还可以去哪里
let _this =this
this.map = map
},
updatePolygonPath(e){
this.polygonPath = Path()
},
createRail(){
createRail(){
this.polygonPath=[
{lng:119.321437,lat:26.067988},
{lng:119.34978048664546, lat:26.066239294066676}, {lng:119.33585576560436, lat:26.07754666038478} ]
},
editRail(){
this.edit=!this.edit
},
clearRail(){
北斗天气预报精确50米下载this.map.clearOverlays()
this.polygonPath=[]
},
saveRail(){
alert(JSON.stringify(this.polygonPath))
}
},
}
</script>
<style lang="less"scoped>
.map{
width: 100%;
height: 800px;
}
.polygon{
stroke-color:"blue";
stroke-opacity:0.5 ;
stroke-weight:1 ;
fillOpacity:0.5
}
.
title{
color:@title-color;
font-size: 16px;
font-weight: 500;
margin-bottom: 16px;
}
.drawing-panel{
z-index: 999;
position: fixed;
top: 18.5rem;
right: 3.5rem;
padding: 1rem 1rem;
border-radius: .25rem;
background-color: #fff;
box-shadow: 0 2px 6px 0 rgba(27, 142, 236, 0.5);
}
.btn{西安大雁塔门票多少
margin-right: 10px;
font-size: 20px;
cursor: pointer;
}
</style>
⼤概效果如图