vue使用高德地图(v-amap)信息窗体里面的给点击事件

在这里插入图片描述
1.打开信息窗体上个文章已有
(点击bbbb)
2.在项目中可能打开信息窗体里面可能还需一些功能,所以点击事件是必不可少的
3.利用事件委托 e.target判断是否是自己想要的点击的dom元素
或者用settimeout也行

4.如果点击其他地方出现报错 就在 destory生命周期里面把事件移除掉
我这里就直接上代码 了

 <template>
  <div class="content">
    <div class="amap-wrapper">
      <el-amap class="amap-box" :zoom="zoom" :center="center" :mapStyle="mapStyle">
        <el-amap-marker
          v-for="marker in markers"
          :position="marker.position"
          :key="marker.id"
          :events="marker.events"
          :icon="marker.icon"
        ></el-amap-marker>
        <el-amap-info-window
          v-if="window"
          :position="window.position"
          :visible="window.visible"
          :content="window.content"
          :offset="window.offset"
        ></el-amap-info-window>
      </el-amap>
    </div>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        center: [121.539693,31.126667],
        zoom:16,
        mapStyle: "amap://styles/8b6be8ec497009e17a708205348b899a", //设置地图样式
        markers: [],
        windows:[],
        window:'',
      }
    },
    methods:{
      point(){
        let markers = [];
        let windows=[]
        let that=this
        let pointMarker=[
          {
            lng:121.536477,
            lat:31.26924,
            url:"../../assets/logo.png",
            title:"this is title",
            text: "aaaaa"
            },{
            lng:121.538097,
            lat:31.126337 ,
            url:"../../assets/logo.png",
            title:"this is title",
            text: "bbbbb"
}]
        pointMarker.forEach((item,index)=>{
          markers.push({
            position: [item.lng,item.lat],
            // icon:item.url, //不设置默认蓝色水滴
            events: {
              click() {
                that.windows.forEach(window => {
                  window.visible = false; //关闭窗体
                });
                that.window = that.windows[index];
                that.$nextTick(() => {
                  that.window.visible = true;//点击点坐标,出现信息窗体
                });
              }
            }
          })
          windows.push({
            position: [item.lng,item.lat],
            content:"<div id='content'>"+item.text+"</div>",//内容
            offset:[5,-15],//窗体偏移
            visible: false//初始是否显示
          })
        })
        //  加点
        this.markers = markers;
        //加弹窗
        this.windows=windows
      },
      /**
       * 通过事件委托给信息窗体里面的div添加点击事件
       */
      init(){
        document.getElementsByTagName("div")[0].addEventListener('click',function(e){
        if(e.target==content){
          console.log(77777)
        }
})
      }
    },
    mounted(){
      this.point()
      this.init()
    }
  }
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped lang="scss">
.amap-wrapper {
  width: 1440px;
  height: 600px;
}
</style>
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
Vue使用AMap.Geolocation需要进行以下步骤: 1. 在main.js中注册AMap.Geolocation插件。可以在main.js的plugin中加入 'AMap.Geolocation'。如果没有加入,可能会出现报错信息。 2. 在组件中使用AMap.Geolocation获取地理位置。可以在组件的data中定义相关属性,如lng、lat、center等。然后在插件的init事件中调用getCurrentPosition方法获取位置信息,并将获取到的经纬度赋值给相应的属性。 3. 确保在使用AMap.Geolocation之前,已经引入了高德地图的相关脚本。可以在index.html中引入高德地图的脚本文件。 4. 注意在使用vue-amap进行地图显示时,一定要设置地图的宽高,否则地图不会显示。可以给地图容器外面套一个div,并给div设置宽高。 综上所述,在Vue使用AMap.Geolocation可以按照以上步骤进行操作。 #### 引用[.reference_title] - *1* *3* [记一坑:vue-amap的Geolocation插件在chrome浏览器精准定位失败问题](https://blog.csdn.net/weixin_44015248/article/details/86660096)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [vue cli 使用高德Amap进行定位,获取当前城市步骤](https://blog.csdn.net/weixin_46475257/article/details/122745155)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

正函数 

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

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

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

打赏作者

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

抵扣说明:

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

余额充值