处理事件
示例
TIP
点击地图,来测试下点击事件
代码实现
vue
<template>
<div id="map" class="w-full h-96"></div>
</template>
<script setup>
import L from "leaflet";
import "leaflet/dist/leaflet.css";
import { onMounted, onUnmounted, ref } from "vue";
const map = ref(null);
onMounted(() => {
// 创建地图实例
map.value = L.map("map");
// 添加瓦片图层(底图)
L.tileLayer("https://tile.openstreetmap.org/{z}/{x}/{y}.png").addTo(
map.value
);
// 创建弹窗
const popup = L.popup();
// 设置弹窗内容
// openOn 方法将弹窗绑定到地图上,并立即打开它
popup
.setContent("A pretty CSS3 popup.<br> Easily customizable.")
.setLatLng([51.505, -0.09])
.openOn(map.value);
// 添加矢量标记 到地图上,并绑定弹窗
L.marker([51.505, -0.09]).addTo(map.value).bindPopup(popup).openPopup();
// 添加圆
L.circle([51.508, -0.11], 500, {
color: "red",
fillColor: "#f03",
fillOpacity: 0.5,
})
.addTo(map.value)
.bindPopup("我是圆")
.openPopup();
// 添加多边形
L.polygon([
[51.509, -0.08],
[51.503, -0.06],
[51.51, -0.047],
])
.addTo(map.value)
.bindPopup("我是多边形", { autoPan: true })
.openPopup();
// 设置地图中心点和缩放级别
map.value.setView([51.505, -0.09], 13);
// 监听地图点击事件
map.value.on("click", (e) => {
// 添加弹窗
L.popup()
.setLatLng(e.latlng)
.setContent("你点击了地图" + e.latlng.toString())
.openOn(map.value);
});
});
onUnmounted(() => {
map.value.remove();
});
</script>
<style lang="scss" scoped>
:deep(.leaflet-control-attribution) {
display: none;
}
</style>