最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue結(jié)合高德地圖實現(xiàn)HTML寫自定義信息彈窗全過程

 更新時間:2023年04月11日 08:44:22   作者:呈兩面包夾芝士  
最近開發(fā)中遇到一個多個點繪制,并實現(xiàn)點擊事件,出現(xiàn)自定義窗口顯示相關(guān)信息等功能,下面這篇文章主要給大家介紹了關(guān)于Vue結(jié)合高德地圖實現(xiàn)HTML寫自定義信息彈窗的相關(guān)資料,需要的朋友可以參考下

最近在寫項目的時候有個需求就是根據(jù)點擊地圖上的點展示對應的信息,彈窗看著還挺花哨的。我在高德地圖官網(wǎng)上還有各大平臺找了如何自定義彈窗,可給出的大多數(shù)都是通過JS寫HTML結(jié)構(gòu),我感覺這種不僅不好布局,而且可讀性和維護性都不如直接寫HTML好。于是我就在想,能不能在HTML里寫這個彈窗呢?

答案是:!

效果圖如下:

先說下思路吧,通過看高德地圖官方文檔關(guān)于InfoWindow的介紹,可以看出信息彈窗的顯示內(nèi)容,可以是HTML要素字符串或者HTMLElement對象。于是我就想到了在Vue里不是可以通過this.$refs獲取元素的DOM節(jié)點嗎?然后我就開始了第一次嘗試。

先看下后臺返回的數(shù)據(jù)類型:

      data: [
        {
          id: '1', //id
          projectName: 'xxxx項目', //項目名稱
          address: '山東省濟南市市中區(qū)xxxxxxxxxx', //項目地址
          sketchMapUrl: '116.998232,36.651352', //項目坐標
          startDate: '2022-06-18', //計劃開始日期
          completedDate: '2022-11-18', //計劃結(jié)束日期
          progress: '78', //施工進度
          buildPeople: '32', //施工人員
          alarmNum: '8' //告警信息數(shù)目
        },{
          id: '2', //id
          projectName: 'xxxx項目', //項目名稱
          address: '山東省濟南市市中區(qū)xxxxxxxxxx', //項目地址
          sketchMapUrl: '116.998232,36.651352', //項目坐標
          startDate: '2022-06-18', //計劃開始日期
          completedDate: '2022-11-18', //計劃結(jié)束日期
          progress: '78', //施工進度
          buildPeople: '32', //施工人員
          alarmNum: '8' //告警信息數(shù)目
        }
      ],

我一看這種數(shù)據(jù)類型不就是用v-for嗎?但是這個時候問題來了,不能直接循環(huán)后臺返回的數(shù)據(jù)!

原因有二:

  • 高德地圖的AMap.InfoWindow的content屬性不支持多個DOM根節(jié)點
  • 不知道用戶點擊的哪一個點

必須經(jīng)過篩選,判斷用戶點擊的點.

this.data.map((item) => {
    this.arr = item.sketchMapUrl.split(',')
    //自定義點圖標
    this.marker = new AMap.Marker({
        map: this.map,
        icon: this.icon,
        position: [this.arr[0], this.arr[1]],
        offset: new AMap.Pixel(-13, -30),
        //注意,我這里判斷是給點加了個額外的參數(shù),就是數(shù)據(jù)的id
        extData: item.id
    })
    this.marker.on('click', (e) => {
        this.singleData = []
        //這里通過e.target._opts.extData和item.id進行比對,如果相同則把這項點的信息單獨放一個數(shù)組里去遍歷,就是html里的遍歷數(shù)組
        if (e.target._opts.extData === item.id) {
           this.singleData.push(item)
        }
    this.infoWindow.open(this.map, e.target.getPosition())
    })
})

這個時候可以判斷點擊的點了,下一步要做的就是實現(xiàn)自定義彈窗了。

代碼如下:

<template>
  <div class="web-box">
  	 <!-- 地圖 -->
    <div id="map"></div>

    <!-- 地圖彈窗 -->
    <div ref="infoWindow" class="infoWindow" >
      <div class="container" v-for="(item,index) in singleData" :key="index">
	    <!-- 這里面寫彈窗布局樣式 -->
      </div>
  </div>
</template>

js代碼:

 //自定義信息窗體
this.infoWindow = new AMap.InfoWindow({
  	isCustom: true,
  	autoMove: true,
	avoid: [20, 20, 20, 20],
    content: this.$refs.infoWindow,
    closeWhenClickMap: true,
    offset: new AMap.Pixel(16, -30)
})

通過this.$refs.infoWindow拿到在HTML里寫的彈窗節(jié)點,放在content內(nèi),這樣我們就可以不用再寫一些innerHTMLappendChild此類的代碼了!

總結(jié)

到此這篇關(guān)于Vue結(jié)合高德地圖實現(xiàn)HTML寫自定義信息彈窗的文章就介紹到這了,更多相關(guān)Vue自定義信息彈窗內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • VUE遞歸樹形實現(xiàn)多級列表

    VUE遞歸樹形實現(xiàn)多級列表

    這篇文章主要為大家詳細介紹了VUE遞歸樹形實現(xiàn)多級列表,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • vue項目本地開發(fā)使用Nginx配置代理后端接口問題

    vue項目本地開發(fā)使用Nginx配置代理后端接口問題

    這篇文章主要介紹了vue項目本地開發(fā)使用Nginx配置代理后端接口問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Vue-Element-Admin集成自己的接口實現(xiàn)登錄跳轉(zhuǎn)

    Vue-Element-Admin集成自己的接口實現(xiàn)登錄跳轉(zhuǎn)

    關(guān)于這個Vue-element-admin中的流程可能對于新的同學不是很友好,所以本文將結(jié)合實例代碼,介紹Vue-Element-Admin集成自己的接口實現(xiàn)登錄跳轉(zhuǎn),感興趣的小伙伴們可以參考一下
    2021-06-06
  • Vue Element如何獲取select選擇框選擇的value和label

    Vue Element如何獲取select選擇框選擇的value和label

    文章介紹了兩種使用Vue.js和ElementUI獲取select選擇框值的方法:一種是使用watch監(jiān)聽selectedValue的變化,另一種是使用@change事件,兩種方法都能實現(xiàn)獲取選擇的value和label
    2025-01-01
  • vue組件之間的數(shù)據(jù)傳遞方法詳解

    vue組件之間的數(shù)據(jù)傳遞方法詳解

    這篇文章主要介紹了vue組件之間的數(shù)據(jù)傳遞方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • Vue+Canvas繪圖使用的講解

    Vue+Canvas繪圖使用的講解

    這篇文章主要介紹了Vue+Canvas繪圖的使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • vue頁面設(shè)置滾動失敗的完美解決方案(scrollTop一直為0)

    vue頁面設(shè)置滾動失敗的完美解決方案(scrollTop一直為0)

    這篇文章主要介紹了vue頁面設(shè)置滾動失敗的解決方案(scrollTop一直為0),本文通過場景分析實例代碼相結(jié)合給大家介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • Vuex提升學習篇

    Vuex提升學習篇

    本篇文章主要介紹了Vuex提升學習篇,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • vue+el-element中根據(jù)文件名動態(tài)創(chuàng)建dialog的方法實踐

    vue+el-element中根據(jù)文件名動態(tài)創(chuàng)建dialog的方法實踐

    本文主要介紹了vue+el-element中根據(jù)文件名動態(tài)創(chuàng)建dialog的方法實踐,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • 基于Vue的Drawer組件實現(xiàn)

    基于Vue的Drawer組件實現(xiàn)

    本文將從零實現(xiàn)一個Drawer抽屜組件,組件用 vue2 語法寫的,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-05-05

最新評論

措勤县| 北宁市| 盐山县| 工布江达县| 汕头市| 安塞县| 潼南县| 北票市| 苏尼特右旗| 黎川县| 麦盖提县| 鄂州市| 清原| 临汾市| 黎城县| 谷城县| 长丰县| 河西区| 马边| 梅河口市| 大英县| 张北县| 台东市| 禄丰县| 浦北县| 始兴县| 新河县| 绥宁县| 梅河口市| 丰镇市| 昌宁县| 枣庄市| 新龙县| 扬中市| 通州市| 普宁市| 博爱县| 达孜县| 临沧市| 泗水县| 庆安县|