Skip to content

vMap 地图容器

基于 Leaflet 的地图容器组件,是所有地图图层组件的父容器。

基础用法

vue
<script setup>
import { vMap } from '@twi1i9ht/visual-lib'
</script>

<template>
  <vMap :center-lat="39.9" :center-lng="116.4" :zoom="12" style="width: 100%; height: 400px;" />
</template>

添加标记

vue
<script setup>
import { vMap, vMarker } from '@twi1i9ht/visual-lib'
</script>

<template>
  <vMap :center-lat="39.9" :center-lng="116.4" :zoom="12">
    <vMarker :lat="39.9" :lng="116.4" title="北京" />
    <vMarker :lat="31.2" :lng="121.5" title="上海" />
  </vMap>
</template>

自定义瓦片图层

vue
<template>
  <vMap
    :center-lat="39.9"
    :center-lng="116.4"
    :zoom="12"
    tile-url="https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}{r}.png"
    attribution="&copy; CartoDB"
  />
</template>

Props

属性类型默认值说明
centerLatnumber39.9中心点纬度
centerLngnumber116.4中心点经度
zoomnumber13缩放级别
minZoomnumber1最小缩放级别
maxZoomnumber18最大缩放级别
tileUrlstringOSM 瓦片瓦片图层 URL
attributionstring版权信息
zoomControlbooleantrue是否显示缩放控件
draggingbooleantrue是否可拖动
scrollWheelZoombooleantrue是否允许滚轮缩放
doubleClickZoombooleantrue是否允许双击缩放
placeholderstring加载占位文本
borderRadiusnumber0边框圆角
borderstring'none'边框样式

Events

事件名参数说明
readymap: L.Map地图初始化完成
clicke: L.LeafletMouseEvent地图点击
moveendcenter: {lat, lng}, zoom移动结束
zoomendzoom: number缩放结束

Methods

通过 ref 调用:

vue
<script setup>
import { ref } from 'vue'
import { vMap } from '@twi1i9ht/visual-lib'

const mapRef = ref()

function flyToShanghai() {
  mapRef.value?.flyTo(31.2, 121.5, 12)
}
</script>

<template>
  <vMap ref="mapRef" :center-lat="39.9" :center-lng="116.4" />
  <button @click="flyToShanghai">飞到上海</button>
</template>
方法参数说明
getMap()获取 Leaflet Map 实例
flyTo(lat, lng, zoom?)经纬度, 缩放级别飞行到指定位置
setView(lat, lng, zoom?)经纬度, 缩放级别设置视图
fitBounds(bounds, options?)边界, 选项适配边界

Slots

插槽名说明
default地图图层组件(vMarker, vHeatLayer 等)
placeholder加载占位内容

注意事项

  1. 必须引入 Leaflet 样式:import 'leaflet/dist/leaflet.css'
  2. 地图容器必须有明确的宽高

Released under the MIT License.