Skip to content
目录

ElAmap(示例)

DANGER

父级容器必须设置宽高

查看代码
vue
<template>
  <div>
    <div class="flex items-center mb-7">
      <div class="flex items-center w-250px">
        center:
        <n-input :value="amapOptions.center?.join(',')" read-only type="text" />
      </div>
      <div class="flex items-center w-200px ml-5">
        zoom:<n-input-number
          v-model:value="amapOptions.zoom"
          readonly
          :show-button="false"
        />
      </div>
    </div>
    <div class="h-300px w-700px">
      <ElAmap
        ref="AmapRef"
        v-model:center="amapOptions.center"
        v-model:zoom="amapOptions.zoom"
      >
        <ElMarker
          :position="[116.473778, 39.990661]"
          :label="{
            content: 'Hello, Vue3-AMap!',
            offset: [0, 0],
            direction: 'bottom',
          }"
        />
      </ElAmap>
    </div>
    <div class="mt-5">
      <n-button @click="handleGetInstance">获取地图实例</n-button>
      <n-button @click="handleDestroy" type="error" class="ml-4"
        >销毁地图</n-button
      >
    </div>
  </div>
</template>

<script setup lang="ts">
import { reactive, ref } from "vue";
import { ElAmap, ElMarker } from "@dabu/vue3-amap";
import type { ElAmapProps, ElAmapExpose } from "@dabu/vue3-amap";
import { useMessage } from "../../components/message";
const { message } = useMessage();
const AmapRef = ref<ElAmapExpose | null>(null);
// 组件参数
const amapOptions = reactive<ElAmapProps>({
  zoom: 10,
  center: [116.397428, 39.90923],
});
// 获取地图实例 按钮点击事件
function handleGetInstance() {
  const map = AmapRef.value?.getInstance();
  message?.info(() => "获取成功,请在控制台查看", {
    closable: true,
    duration: 2000,
  });
  console.log(map);
}

// 销毁地图 按钮点击事件
function handleDestroy() {
  AmapRef.value?.destroy();
}
</script>
<template>
  <div>
    <div class="flex items-center mb-7">
      <div class="flex items-center w-250px">
        center:
        <n-input :value="amapOptions.center?.join(',')" read-only type="text" />
      </div>
      <div class="flex items-center w-200px ml-5">
        zoom:<n-input-number
          v-model:value="amapOptions.zoom"
          readonly
          :show-button="false"
        />
      </div>
    </div>
    <div class="h-300px w-700px">
      <ElAmap
        ref="AmapRef"
        v-model:center="amapOptions.center"
        v-model:zoom="amapOptions.zoom"
      >
        <ElMarker
          :position="[116.473778, 39.990661]"
          :label="{
            content: 'Hello, Vue3-AMap!',
            offset: [0, 0],
            direction: 'bottom',
          }"
        />
      </ElAmap>
    </div>
    <div class="mt-5">
      <n-button @click="handleGetInstance">获取地图实例</n-button>
      <n-button @click="handleDestroy" type="error" class="ml-4"
        >销毁地图</n-button
      >
    </div>
  </div>
</template>

<script setup lang="ts">
import { reactive, ref } from "vue";
import { ElAmap, ElMarker } from "@dabu/vue3-amap";
import type { ElAmapProps, ElAmapExpose } from "@dabu/vue3-amap";
import { useMessage } from "../../components/message";
const { message } = useMessage();
const AmapRef = ref<ElAmapExpose | null>(null);
// 组件参数
const amapOptions = reactive<ElAmapProps>({
  zoom: 10,
  center: [116.397428, 39.90923],
});
// 获取地图实例 按钮点击事件
function handleGetInstance() {
  const map = AmapRef.value?.getInstance();
  message?.info(() => "获取成功,请在控制台查看", {
    closable: true,
    duration: 2000,
  });
  console.log(map);
}

// 销毁地图 按钮点击事件
function handleDestroy() {
  AmapRef.value?.destroy();
}
</script>

类型定义

组件导出以下类型定义:

ts
import type { ElAmapProps, ElAmapExpose } from "@dabu/vue3-amap";
import type { ElAmapProps, ElAmapExpose } from "@dabu/vue3-amap";

Props

参数说明类型默认值
center初始中心经纬度Array[116.397428, 39.90923]
zoom地图显示的缩放级别,可以设置为浮点数;若center与level未赋值,地图初始化默认显示用户所在城市范围。Number11
rotation地图顺时针旋转角度,取值范围 [0-360]Number0
pitch俯仰角度,默认 0,最大值根据地图当前 zoom 级别不断增大,2D地图下无效 。Number0
viewMode地图视图模式,默认为‘2D’,可选’3D’,选择‘3D’会显示 3D 地图效果。String2D
terrain地图是否展示地形,此属性适用于 3D 地图。默认为值 false 不展示地形,可选 true ,选择 true 会展示地形效果。(注意:此属性适用于 JSAPI v2.1Beta 及以上版本)。Booleanfalse
features设置地图上显示的元素种类, 支持'bg'(地图背景)、'point'(POI点)、'road'(道路)、'building'(建筑物)Array['bg', 'point', 'road', 'building']
layers地图图层数组,数组可以是图层 中的一个或多个,默认为普通二维地图Array-
zooms地图显示的缩放级别范围, 默认为 [2, 20] ,取值范围 [2 ~ 30]Array[2, 20]
dragEnable地图是否可通过鼠标拖拽平移,Booleantrue
zoomEnable地图是否可缩放Booleantrue
jogEnable地图是否使用缓动效果Booleantrue
pitchEnable是否允许设置俯仰角度, 3D 视图下为 true, 2D 视图下无效。Booleantrue
rotateEnable地图是否可旋转Booleantrue
animateEnable地图平移过程中是否使用动画Booleantrue
keyboardEnable地图是否可通过键盘控制Booleantrue
doubleClickZoom地图是否可通过双击鼠标放大地图Booleantrue
scrollWheel地图是否可通过鼠标滚轮缩放浏览Booleantrue
touchZoom地图在移动终端上是否可通过多点触控缩放浏览地图Booleantrue
touchZoomCenter当touchZoomCenter=1的时候,手机端双指缩放的以地图中心为中心,否则默认以双指中间点为中心。Number1
showLabel是否展示地图文字和 POI 信息Booleantrue
defaultCursor地图默认鼠标样式。参数 defaultCursor 应符合 CSS 的 cursor 属性规范。Stringdefault
isHotspot是否开启地图热点和标注的 hover 效果。PC端默认是true, 移动端默认是 false。Booleantrue
mapStyle设置地图的显示样式String-
wallColor地图楼块的侧面颜色string | number[]-
roofColor地图楼块的顶面颜色string | number[]-
showBuildingBlock是否展示地图 3D 楼块Booleantrue
showIndoorMap是否自动展示室内地图Booleanfalse
labelRejectMask文字是否拒绝掩模图层进行掩模Booleanfalse
skyColor天空颜色,3D 模式下带有俯仰角时会显示string | number[]-
mask为 Map 实例指定掩模的路径,各图层将只显示路径范围内图像,3D视图下有效Array-
WebGLParams额外配置的WebGL参数any-

Events

事件名说明回调参数
resize地图容器尺寸改变事件event: MapsEvent
complete地图资源加载完成后触发事件event: MapsEvent
click鼠标左键单击事件event: MapsEvent
dblclick鼠标左键双击事件event: MapsEvent
mapmove地图平移时触发事件event: MapsEvent
hotspotclick鼠标点击热点时触发event: MapsEvent
hotspotover鼠标滑过热点时触发event: MapsEvent
hotspotout鼠标移出热点时触发event: MapsEvent
movestart地图平移开始时触发event: MapsEvent
moveend地图移动结束后触发,包括平移,以及中心点变化的缩放。如地图有拖拽缓动效果,则在缓动结束后触发event: MapsEvent
zoomchange地图缩放级别更改后触发event: MapsEvent
zoomstart缩放开始时触发event: MapsEvent
zoomend缩放结束时触发event: MapsEvent
rotatechange地图旋转 rotation 更改后触发event: MapsEvent
rotatestart地图旋转 rotation 开始时触发event: MapsEvent
rotateend地图旋转 rotation 结束时触发event: MapsEvent
mousemove鼠标在地图上移动时触发event: MapsEvent
mousewheel鼠标滚轮开始缩放地图时触发event: MapsEvent
mouseover鼠标移入地图容器内时触发event: MapsEvent
mouseout鼠标移出地图容器时触发event: MapsEvent
mouseup鼠标在地图上单击抬起时触发event: MapsEvent
mousedown鼠标在地图上单击按下时触发event: MapsEvent
rightclick鼠标右键单击事件event: MapsEvent
dragstart开始拖拽地图时触发event: MapsEvent
dragging拖拽地图过程中触发event: MapsEvent
dragend停止拖拽地图时触发。如地图有拖拽缓动效果,则在拽停止,缓动开始前触发event: MapsEvent
touchstart触摸开始时触发事件,仅适用移动设备event: MapsEvent
touchmove拖拽地图过程中触发,仅适用移动设备event: MapsEvent
touchend触摸结束时触发事件,仅适用移动设备event: MapsEvent

Released under the MIT License.