【WebGIS实例】(13)MapboxGL+Vue3 实现自定义组件地图气泡弹窗 popup

本文介绍了如何在Vue应用中利用MapboxGL库创建一个核心方法,当用户点击地图上的要素时,弹出自定义组件显示相关信息。方法包括设置Popup对象、创建自定义组件和监听地图点击事件。
摘要由CSDN通过智能技术生成

前言

没有前言,直接上代码了

代码

  1. 核心方法
import mapboxgl from 'mapbox-gl'
import { createApp } from 'vue'

const addComponentPopup = (component, feature, lnglat, map) => {
  const popup = new mapboxgl.Popup({
    // anchor: 'center', // 'center' , 'top' , 'bottom' , 'left' , 'right' , 'top-left' , 'top-right' , 'bottom-left' , and 'bottom-right'
    className: 'customize-popup',
    closeButton: false,
    closeOnClick: true,
    closeOnMove: false,
    focusAfterOpen: false,
    maxWidth: '240px',
    offset: 10
  })

  const container = document.createElement('div')
  createApp(component, {
    feature: feature // 传入信息
  }).mount(container)

  popup.setLngLat(lnglat).setDOMContent(container).addTo(map)
  return popup
}

export { addComponentPopup }
  1. 要搭载的自定义组件
<script setup>
defineProps({
  feature: Object
})
</script>

<template>
  <div style="background: yellow">
    <div>早上好</div>
    <div>接收参数:{{ feature.type }}</div>
  </div>
</template>
  1. 使用
import { addComponentPopup } from '@/utils/map/event'
import componentA from './componentA.vue'


map.on('click', (e) => {
  const { point, lngLat } = e;
  const clickedFeatures = map.queryRenderedFeatures(point); // 获取点击处的要素

  if (clickedFeatures.length !== 0) {
    addComponentPopup(componentA, clickedFeatures[0], lngLat, map);
  }
});
  1. 效果:点击地图上的要素后出现popup
    在这里插入图片描述
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值