Vue-baidu-map 动态刷新地图的方法

前言

  • vue-baidu-map 是没有官方的刷新方法的,如果要在某个功能上实现刷新地图,我们可以使用v-if加开关思想加上侦听器,侦听这个标注数组来控制开关刷新

  • 比如我们是在地图上动态标注点位,点位是v-for,当便利的数组有数据就可以刷新地图,就可以实现标注。

  • 刚开始我是直接调用<baidu-map>的handler ()方法,也可以实现标注,但是会因为没有实例对象报错。

  • 我的实际情况是点标注,在后续获取到故障信息的点位信息后,在地图给他按钮动态标注出来。

  • 在网上查找了很多办法,也没有详细的解决方案,困扰了很久,在这里总结一下

具体实现

1.地图添加一个v-if 开关控制加载 点标注是v-for points数组

 <baidu-map
          v-if="hackReset"
          :center="center"
          :zoom="zoom"
          @ready="handler"
          class="baidu-map"
        >
          <!-- 标注 -->
          <div v-for="(item, k) in points" :key="k">
            <bm-marker
              :position="{ lng: item.lng, lat: item.lat }"
              :icon="{ url: item.txt, size: { width: 28, height: 30 } }"
              :title="item.title"
              @mouseover="infoWindowOpen(k)"
              @mouseout="infoWindowClose(k)"
            >
              <bm-info-window
                title="设备信息"
                :position="{ lng: item.lng, lat: item.lat }"
                :show="item.show"
              >
                <p v-text="item.poinser"></p>
                {{ item.poinser }}
              </bm-info-window>
            </bm-marker>
          </div>
        </baidu-map>
  1. data 写一个hackReset变量控制地图开关默认开

 // 百度地图刷新开关
 hackReset: true,
  1. points数组数据格式

this.points = [
        {
          lng: 119.27976095105356,
          lat: 26.11161188133426,
          show: false,
          txt: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAkdJREFUWEftlb1rFFEUxX83uyhYa/APsJBY+BEICIEomGZZNI02aQRxdSasYqPlGhtLwSFvVmwskkYLPxpLDWgjotgIEkFLIWgvYq7M29klO7M7bzKzIQiZbt7Hveedc++5wg5/ssP52QUwkAG9yqntkEbavE7GTQFQn9tAazsAAItibPzeN7QGLAtCS0JOlwGjHq8QVpOJuzH/DwBWFmUmRm0k5EnutVEwoE0m+MN4BKBbSLnXCgNocpS/rKJclJBnRepAPeYQHlFhRgI+DYqRaUTq4wOXxXC8EACfj8BDMZhh951OqD4vgA+ARgpsCpT8H5TjhBjOZoHPA+AQMJ9Ink1IVLBiTWdFDF9LAYguq8d5hCPDejmZwPY+2G5xSedkwALouCNbApBhPrmccPMh64pj9lWLrhfF+y0x+SZtLgZiGc4gTOcEsOzS3mnFKV3jCZmcaBE7qbUG+9nLuAR8dgHOxYB6NBjjJnuYknv86gZVn7soExJyrk8yh/ttvQYiQxHuyBJPe8mjV1ZZRzksIV9663G9jLQG1OMnyqS0+Z5MxAbT0ubtAGA1CXk5Ggl8loE1Mf1doAs8YIODKQk6bTtPlZrcZ628EXVmQl0MtYTWkwjvqXAsOWzU5wZQo0JdAn4XngW2BTN0zTIp64hVbknAu3IAfB4j/JAlrvUx0GAfVd4Az5PyxA76DZjN8gRnG8ZUnhTDhZQ3+FwCrohhKrW3wCzKdTHUS9dAVgBtckAC1l3VXkqCosHz3HNKkCdImTO7AP4B4VzbIYTL744AAAAASUVORK5CYII=',
          title: '烟感一',
          poinser: '位于2楼会议室烟感报警了'
        },
        {
          lng: 119.2801137156272,
          lat: 26.109890462480518,
          show: false,
          txt:                            'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAcZJREFUWEftlzFIHEEUhr93ghYSEcFCsRFCitNCDCZgZVp7rxO0i7sIWmgliGClhYFw43VKqhBrCyttBEHs1MLK6iyENEcKBe/JjrPeHkLcvdtDi53mlgfzv2/+/80uJ7zxkjfuTx2ALtDHPSso+ZaACZe0sy4/uAn16wG+M0GOw5Y0D0WrfJMSRxlAHAfWqNasaiqWHBPAqtWIG4GY+gFtBkCjs5UBxHWAKoNS4roZ68O9DUWAcIBykgYAMAZMJhrClBq/lIkdgbAsRTYDBfWZRvkF7ImhYGvz5HlgP3IqG5d6/AGmotdNfZZQNpI5oBRkmz0rWrtGRgz+c7Ye58GzGIYjtSLg0caQ/OTS7p9jCrFg8d8DwC3Khd0kjAJdCP+ocupqA8BH1/gC5dY+5xhD6QSuUTfEwhDQmxSgjHLlmo0A3UAF5czVAsFAOFhnKBVX/wx8AK5Qyq72CehPCuCLwbhcx4FjYFcMs69EsAPMAF/EPLmlHh4QRJMogihAIBgIPwOoz1eU3w6mEGn2BBCZ9kYBwoOm+xv7GqbbtqaWAWQOZA5kDvzXgUV6uGMXtR+T9JdQoYMZ2eJvKP6+/pymf+TXFR8B10ADMBO6FewAAAAASUVORK5CYII=',
          title: '烟感二',
          poinser: '位于2楼会议室烟感报警了'
        }
      ]

4.利用侦听器,侦听标注数组points变化,调接口有数据就是有需要标注信息,就控制地图开关刷新

 watch: {
    points: {
      handler(newValue, oldValue) {
        console.log('百度地图更新了')
        this.hackReset = false
        //遮罩层开关 可有可不有
        this.loadinge = false
        this.$nextTick(() => {
          this.hackReset = true
        })
      }
    }
  },

注意:这里有一个遮罩层开关,是默认开,地图加载完毕就关掉了。因为地图加载有白屏现象,用户体验不好,所以有一个遮罩层。主页文章有。我们通过按钮点击调接口,查询标注点数组数据,利用侦听器侦听数组,有数据就是需要标注。


总结:

经过这一趟流程下来相信你也对 ue-baidu-map 动态刷新地图的方法 有了初步的深刻印象,但在实际开发中我们遇到的情况肯定是不一样的,所以我们要理解它的原理,万变不离其宗。加油,打工人!

什么不足的地方请大家指出谢谢 -- 風过无痕

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: vue-baidu-map是基于百度地图API开发的Vue组件,它能够在Vue项目中轻松地集成百度地图。而离线百度地图是指在没有网络连接的情况下能够使用的百度地图。 正常情况下,百度地图需要联网才能显示地图和获取相关数据。但是在有些场景下,比如地下车库或者偏远山区等网络较差或者没有网络的地方,就无法正常使用百度地图。离线百度地图就是解决这个问题的解决方案,它通过事先将地图数据下载保存在本地,使得在没有网络连接的情况下也能够正常使用百度地图。 对于vue-baidu-map来说,它的离线功能也是很重要的。通过使用vue-baidu-map的离线百度地图,开发者可以轻松地针对不同的场景选择不同的地图方案,提高用户的使用体验。而且离线百度地图对于一些隐私性、安全性要求高的应用场景也更加有优势。 总之,vue-baidu-map离线百度地图是一个非常实用与方便的工具,在实际生产中可以提供更好的用户体验,也为开发者提供了更多的选择与便捷。 ### 回答2: vue-baidu-map离线百度地图是一款基于Vue.js框架开发的百度地图组件库,主要解决的是在无网络或网络不稳定的情况下,无法使用在线地图问题。该组件库提供的离线地图可以在无网络的情况下正常使用,并且具有与在线地图相同的功能和可视化效果。 在vue-baidu-map离线百度地图组件中,我们可以使用百度地图提供的基础地图、卫星地图、混合地图等多种地图样式,并且支持地名搜索、地图缩放、位置探测、路线规划等常用功能。此外,在使用vue-baidu-map离线百度地图时,我们也可以通过添加自定义数据层、自定义覆盖层等方式,对地图进行更加丰富的扩展和定制。 总之,vue-baidu-map离线百度地图是一款非常实用的地图组件库,它可以帮助我们在网络不稳定或者无网络的情况下,依然可以正常使用百度地图,并且具有完整的百度地图功能和美观的地图样式。如果你正在建设一个应用程序,需要集成离线地图功能,那么vue-baidu-map离线百度地图可能正是你需要的工具。 ### 回答3: vue-baidu-map是一个可嵌入Vue.js网站的地图组件,它集成了百度地图的API,可以让开发者轻松实现地图功能。 离线百度地图指的是一种不需要联网即可使用的百度地图,也就是地图数据被下载到本地储存设备上。vue-baidu-map支持使用离线地图,这就意味着用户可以在没有网络的环境下依然能够使用地图功能。 使用vue-baidu-map离线百度地图的优势在于,它提供了更好的用户体验和更高的灵活性。首先,用户无需担心网络不稳定、信号弱的问题,可以随时随地使用地图进行定位、浏览、搜索等操作;其次,开发者可以根据具体需求选择下载特定区域的地图数据,以减少数据流量和缩短加载时间;还可以根据不同需求切换在线地图和离线地图,达到最佳的用户体验。 总之,vue-baidu-map离线百度地图为开发者提供了便捷灵活的地图开发工具,让用户可以更加自由地使用地图服务。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-風过无痕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值