vue3+高德地图@vuemap/vue-amap矢量图形+ant-design-vue

本文介绍了如何在vue3项目中结合vue-amap和ant-design-vue库,实现地图上的矢量图形操作,包括点击地图打点和画圆的功能。通过lazyAMapApiLoaderInstance加载高德地图API,并在组件中设置setup属性完成交互逻辑。

1,安装vuemap/vue-amap和ant-design-vue

2,引入lazyAMapApiLoaderInstance和样式

import '@vuemap/vue-amap/dist/style.css'
import {message} from 'ant-design-vue'
import { lazyAMapApiLoaderInstance } from '@vuemap/vue-amap';

3,调用lazyAMapApiLoaderInstance即可

 lazyAMapApiLoaderInstance.then(() => {
    global.map = new AMap.Map('Amap', {//该处global只是配置的全局变量,'Amap'是地图挂载div的id
    center: new AMap.LngLat(116.3939666748047,39.91763621372857),//中心点
    zoom:13,//地图缩放级别
    viewMode:'3D',//3D地图
  });
  global.map.on('click',mapClick)//给地图绑定点击事件
  //构造点标记
  var marker = new AMap.Marker({
    position: new AMap.LngLat(116.3939666748047,39.91763621372857),   // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9]
    title: '北京'
});
// 构造矢量圆形
var circle = new AMap.Circle({
    center: new AMap.LngLat(116.3939666748047,39.91763621372857), // 圆心位置
    radius: '3000',  //半径
    strokeColor: "#F33",  //线颜色
    strokeOpacity: 1,  //线透明度
    strokeWeight: 3,  //线粗细度
    fillColor: "#ee2200",  //填充颜色
    fillOpacity: 0 //填充透明度
});
global.map.add(marker);//将点挂载到地图上
global.map.add(circle);//将圆挂载到地图上
circle.on('click',cirClick)//给圆绑定点击事件
});

初始化后页面展示

 

### 集成高德地图 JavaScript API 加载器到 Vue 3 和 TypeScript #### 安装依赖包 为了在 Vue 3 和 TypeScript 项目中集成高德地图,首先需要安装 `@amap/amap-jsapi-loader` 及其类型定义文件: ```bash npm install @amap/amap-jsapi-loader --save npm install @types/webpack-env --save-dev ``` 上述命令会下载必要的加载器以及 Webpack 的环境变量类型声明[^1]。 #### 创建地图初始化函数 创建一个新的工具模块用于处理地图API的初始化工作,在此过程中可以利用 TypeScript 提供更强健的类型安全特性。下面是一个简单的实现方式: ```typescript // src/utils/map.ts import AMapLoader from &#39;@amap/amap-jsapi-loader&#39;; export const initMapApi = async () => { try { await AMapLoader.load({ key: &#39;your_amap_api_key&#39;, // 替换成自己的key version: &#39;2.0&#39;, plugins: [] }); console.log(&#39;AMap loaded successfully&#39;); } catch (error) { console.error(&#39;Failed to load AMap:&#39;, error); } }; ``` 这段代码展示了如何通过 `@amap/amap-jsapi-loader` 来异步加载高德地图API,并设置相应的参数如版本号和插件列表等。 #### 组件内调用 为了让地图能够在页面上显示出来,还需要修改对应的 Vue 组件来确保地图API被正确加载并渲染至DOM节点之上。这里推荐将地图API的加载逻辑放在组件生命周期钩子之前执行,即 `beforeMount()` 方法里[^2]。 ```html <template> <div id="mapContainer" style="width:100%; height:500px;"></div> </template> <script lang="ts"> import { defineComponent, onBeforeMount } from &#39;vue&#39;; import { initMapApi } from &#39;@/utils/map&#39;; export default defineComponent({ name: &#39;MapView&#39;, setup() { onBeforeMount(async () => { await initMapApi(); /* 这里可以根据需求进一步操作 */ }); return {}; } }); </script> ``` 以上配置使得当组件即将挂载时触发地图API的加载过程,从而保证了地图实例可以在视图呈现前完成初始化。 #### 使用官方Vue组件库(可选) 如果希望更方便地管理地图及其交互行为,则可以选择使用由社区维护的 [@vuemap/vue-amap](https://vue-amap.guyixi.cn/) 库来进行开发[^3]。该库提供了丰富的功能接口和支持多种场景下的应用案例,能够极大地简化开发者的工作量。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值