vue-baidu-map 覆盖物显隐控制

vue-baidu-map 覆盖物显隐控制


工作需要使用 vue-baidu-map,但是像这种服务于大众的插件,好多自己的特殊情况是满足不了的,掰扯了半天,发现在上面添加的覆盖物,除了自定义覆盖物外,其他的都没法控制显示隐藏.或许是可以控制,但我没有找到,这可如何是好.
然后就想到了用v-if来控制:

<div v-if="show">
	<bm-polyline ... ></bm-polyline>
</div>

如此,达到要求了,但是问题来了:

  1. 多个覆盖物同时存在的时候,用v-if控制显隐的时候,覆盖物的叠放顺序发生了变化.
  2. bm-driving组件是个异步的道路索引,v-if把它干掉以后,等会找到的道路还是会出现.

几经苦思冥想,然后想到了用数据控制显隐,把这些组件都封装了一层,在接受个参数show是ture的时候使用正常的数据,在接受的参数show是false的时候,给个空数据或者无效数据.
例如polyline:

<template>
    <bm-polyline 
	    :path="mpoints" 
	    :strokeColor="mColor"
	    :strokeWeight="mwidth"
	    :strokeOpacity="mopacity"
	></bm-polyline>
</template>
<script>
export default {
    name:'ls_map_polyline',
    props:['show','points','color','width','opacity'],
    computed:{
        mpoints(){
            if(typeof this.show == 'undefined' || this.show){
                return this.points || [{lng:116.404,lat:39.915},{lng:116.375,lat:39.824},{lng:116.423,lat:39.9}]
            }else{
                return []
            }
        },
        mColor(){
            return this.color || 'red'
        },
        mwidth(){
            return this.width || 4
        },
        mopacity(){
            return this.opacity || 0.9
        }
    }
}
</script>	

在show是false的时候,mpoints变成了一个空数组,从而达到隐藏的效果.
以此类推,圆形可以控制半径,道路索引可以控制起终点.
这个组件的api还有个小问题,道路索引 路线添加完成的事件是polylinesset, api上写的onpolylinesset,多了个on,当时找这个问题都快找吐血了.

  • 如果有高手发现有控制显示隐藏的方法时候烦请告知,小弟深谢
  • 小弟一直很纳闷这个组件的原理,是在baidu-map组件里把slot解析一遍吗?有没有高手指点下

猜你喜欢

转载自blog.csdn.net/kmh0228/article/details/87353729