当前位置:   article > 正文

【VUE-地图】百度地图不用infoWindow实现自定义悬浮框_vue地图悬浮窗口

vue地图悬浮窗口

最近写项目搞地图需求,需要用百度地图的标点跟展示信息,但是infoWindow改样式很麻烦,我突然想到可以用el-popover来实现,具体代码如下

地图组件中使用marker方

  1. //只需要用marker方法就可以实现
  2. this.markers.forEach(marker => {
  3. const point = new window.BMapGL.Point(marker.lng, marker.lat);
  4. const icon = new window.BMapGL.Icon(marker.icon, new window.BMapGL.Size(20, 20));
  5. const markerObj = new window.BMapGL.Marker(point, { icon: icon });
  6. const infoWindow = new window.BMapGL.InfoWindow(popHtml || '', {
  7. offset: new window.BMapGL.Size(0, -20),
  8. enableAutoPan: false,
  9. });
  10. markerObj.addEventListener('mouseover', function (e) {
  11. // 返回鼠标位置信息
  12. const pixel = new window.BMapGL.Pixel(e.clientX, e.clientY)
  13. _this.$emit('markerMouseover', marker, pixel);
  14. });
  15. markerObj.addEventListener('mouseout', function () {
  16. _this.$emit('markerMouseout', marker, infoWindow);
  17. });
  18. const label = new window.BMapGL.Label(marker.name, {
  19. position: point,
  20. offset: new window.BMapGL.Size(-30, 15), // 将Label覆盖物放置在标点下方
  21. fontSize: '10px',
  22. backgroundColor: '#fff', // 设置背景颜色为白色
  23. border: 'none !important', // 去掉Label覆盖物的边框
  24. });
  25. this.baidu.addOverlay(label);
  26. this.baidu.addOverlay(markerObj);
  27. });

父组件中调用这两个暴露的方法和el-popover

  1. <el-popover class="posinfopopper" :style="{ top: popy + 'px', left: popx + 'px' }"
  2. ref="posinfopopper"
  3. id="mappoper"
  4. popper-class="mappopper"
  5. placement="right"
  6. width="300"
  7. trigger="hover"
  8. :popper-options="{ boundariesElement: 'viewport', gpuAcceleration: false, }"
  9. v-model="showposinfo">
  10. <!-- 你的自定义窗口结构 -->
  11. </el-popover>

调用这两个方法就可以显示隐藏了,

  1. markerMouseover (marker, pixel) {
  2. console.log(marker, pixel);
  3. this.showposinfo = true
  4. this.mapType = marker.type
  5. this.info.name = marker.name
  6. this.popy = pixel.y - 50
  7. this.popx = pixel.x - 300
  8. },
  9. markerMouseout (marker, infoWindow) {
  10. this.showposinfo = false;
  11. },

最终效果

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/109694
推荐阅读
相关标签
  

闽ICP备14008679号