组件

地图

TdtMap 地图容器:props、事件与命令式访问

<TdtMap> 是地图容器,内部完成 SDK 加载、地图初始化与事件桥接。所有覆盖物、控件、工具、图层组件写在 <TdtMap> 内部即自动挂载。

地图加载中…

基本用法

<script setup>
import { TdtMap } from "@tianditu/vue";
</script>

<template>
  <TdtMap tk="你的浏览器端密钥" :center="[116.404, 39.915]" :zoom="12" />
</template>

Props

Prop类型说明
tkstring浏览器端密钥,仅初始化时生效
center[number, number]中心点坐标,默认 [116.404, 39.915]
zoomnumber缩放级别,默认 12
minZoom / maxZoomnumber最小/最大缩放级别
projectionstring地图投影,仅初始化时生效
limitBoundsLngLatBounds地图显示范围限制
draggingboolean拖拽,默认开启
scrollWheelZoomboolean滚轮缩放,默认开启
doubleClickZoomboolean双击缩放,默认开启
keyboardboolean键盘操作,默认开启
inertiaboolean拖拽惯性,默认开启
continuousZoomboolean连续缩放,默认开启
pinchToZoomboolean双指缩放,默认开启
autoResizeboolean容器尺寸变化后自动调整

事件

以官方 Map 文档页的 14 个事件为准,原生事件名直发:

click contextmenu mouseover movestart moveend zoomend removeoverlay removecontrol dragstart dragend layerremove resize touchstart touchend

<template>
  <TdtMap tk="" @click="(e) => console.log(e.lnglat)" />
</template>
上表之外的地图事件(如 mousemovedblclickzoomstart)不经模板直发,需要时用 useMap 拿到实例后 map.addEventListener 命令式挂接。

命令式访问

useMap()<TdtMap> 内部提供地图实例的响应式引用:

<script setup>
import { useMap } from "@tianditu/vue";

const { map, ready } = useMap();

function flyTo() {
  map.value?.centerAndZoom(new T.LngLat(116.404, 39.915), 14);
}
</script>

模板引用同样可用:<TdtMap ref="mapRef"> 的实例上 expose 了 mapsessionready

Web Components

<TdtMap tk="你的浏览器端密钥" :center="[116.404, 39.915]" :zoom="12" />

事件以 tdt- 前缀派发:tdt-clicktdt-zoomend 等,event.detail 为原生事件对象。

Copyright © 2026