vuebaidumap 删除覆盖物_vue实现根据多选框按钮,动态给百度地图添加和删除相应的覆盖物...

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 16:46   1483   0

1.定义对象数组

cars:[

{

indexName: 0,

name:'登高车',

state:false,

icon:'static/img/mapMarker/car1.png',

points:[

[116.316967,39.990748],

[116.323938,39.989919],

[116.31311,39.9890],

[116.315,39.9890],

],

},

{

indexName:1,

name:'高压灭火剂',

state: false,

icon:'static/img/mapMarker/car2.png',

points:[

[116.328896,39.988039],

[116.321135,39.987072],

]

},

{

indexName: 2,

name:'高压强磁堵漏装置',

state: false,

icon:'static/img/mapMarker/car3.png',

points:[

[116.332453,39.989007],

[116.324045,39.987984],

]

},

{

indexName: 3,

name:'排烟车',

state: false,

icon:'static/img/mapMarker/car4.png',

points:[

[116.322085,39.974316],

[116.322108,39.986381]

]

},

{

indexName:4,

name:'泡沫车',

state: false,

icon:'static/img/mapMarker/car5.png',

points:[

[116.332508,39.982311],

[116.332918,39.986386]

]

},

{

indexName: 5,

name:'气动起重气垫',

state: false,

icon:'static/img/mapMarker/car6.png',

points:[

[116.329258,39.958318],

[116.329606,39.966381]

]

},

{

indexName:6,

name:'移动供气源',

state: false,

icon:'static/img/mapMarker/car7.png',

points:[

[116.324208,39.988331],

[116.324667,39.986383]

]

},

{

indexName:7,

name:'云梯车',

state: false,

icon:'static/img/mapMarker/car8.png',

points:[

[116.320258,39.988371],

[116.321618,39.986389]

]

},

],

复制代码

2.data定义二维数组myOverlays:[];

3. mounted(){

this.$nextTick(function () {

this.initMap();

});

},

4.methods(){

initMap(){

this.createMap() ; //创建地图

},

createMap(){//创建地图

let map = new BMap.Map("map");//在百度地图容器中创建一个地图

let point = new BMap.Point(116.323066,39.989956);//定义一个中心点坐标

map.centerAndZoom(point,16);//设定地图的中心点和坐标并将地图显示在地图容器中

map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放

window.map = map;//将map变量存储在全局

},

addOverlays(n){//添加覆盖物

let _th = this.cars;

let array=this.myOverlays;

array[n]={

label:[],

Icon: new BMap.Icon(_th[n].icon, new BMap.Size(30, 30), {offset: new BMap.Size(10, 25),}),

markers:[]

};

for (let j = 0; j < _th[n].points.length; j++){

let point = new BMap.Point(_th[n].points[j][0], _th[n].points[j][1]);

array[n].markers[j]=new BMap.Marker(point, {

icon: array[n].Icon

});

array[n].label[j] = new BMap.Label(_th[n].name, {offset: new BMap.Size(-5, 30)});

array[n].label[j].setStyle({

color: '#fff',

fontSize: '10px',

padding: '5px',

background: 'rgba(0, 0, 0, .5)',

border: '1px solid #fff',

fontFamily: "微软雅黑",

borderRadius: '3px'

});

array[n].markers[j].setLabel(array[n].label[j]);

map.addOverlay(array[n].markers[j]);

}

},

clearOverlays(n){//删除覆盖物

let array=this.myOverlays;

for (let i=0;i< array[n].markers.length;i++){

map.removeOverlay(array[n].markers[i]);

}

},

selectBox(car){//多选框按钮操作

car.state = !car.state;

let carType = car.indexName;

if(car.state==true){

this.addOverlays(carType);

}else {

this.clearOverlays(carType);

}

}

}

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP