vue2动态初始化多个高德地图

在v2项目中遇到了需要根据后台返的数据条数先动态初始化n个高德地图,然后在渲染具体的坐标点,记录一下;

思路:

1,dom节点动态化,v-for后台返回数据,地图容器的  :id=map + (key + 1)

2,先生成一个空数组以便于根据后台返回的n个对象生成n个地图实例;

3,遍历返回数据,给第二步的空数组同步push n个地图实例进去直接初始化,后期遍历再调一遍直接改center即可;

上代码:

html部分

模拟后端返回数据

动态渲染添加以及初始化

人走图毁,消除地图实例

到此结束!!效果图如下

还有可能遇到的问题1

不用怀疑,就是没给地图容器设置宽高,设置了就好了!

问题2

这个是dom中地图容器的id和methods中的方法中的new Amap.Map(id,{})不匹配

新手,代码不规范之类的欢迎不吝赐教,谢谢!

Vue 3 结合 TypeScript 使用高德地图 (AMap) 实现添加多个标记(Marker)可以分为以下几个步骤: 1. **安装依赖**: 首先需要安装 `vue-amap` 和 `typescript` 的支持库。你可以通过 npm 或者 yarn 进行安装: ```bash npm install vue-amap @types/amapjs @types/vue --save ``` 2. **配置 AMap SDK**: 在 `main.ts` 或者 `amap-vue.config.js` 引入并初始化 AMap API: ```typescript import { createApp } from 'vue' import App from './App.vue' import Amap from 'vue-amap' Amap.initAMapApiLoader({ key: 'your_amap_key', // 在高德官网获取您的 API 密钥 plugin: ['AMap.Geolocation', 'AMap.Marker', 'AMap.PolyEditor'], }) const app = createApp(App) app.use(Amap).mount('#app') ``` 3. **创建 Marker 组件**: 创建一个自定义组件,比如 `Marker.vue`,包含地址和点击事件: ```typescript <template> <div class="marker"> <a-amap-marker :position="position" @click="onClick"></a-amap-marker> </div> </template> <script lang="ts"> import { Component, Prop } from 'vue' import { AMapComponent, AMapPosition } from 'vue-amap'; export default class Marker extends AMapComponent { @Prop({ required: true }) position!: AMapPosition; onClick() { console.log('Marker clicked:', this.position); } } </script> ``` 4. **在父组件使用 Marker**: 父组件里实例化并传入地址数据: ```html <template> <div id="app"> <Marker v-for="(location, index) in locations" :key="index" :position="location" /> </div> </template> <script lang="ts"> import Marker from '@/components/Marker.vue'; export default { components: { Marker, }, data() { return { locations: [ { latitude: ..., longitude: ... }, // 标记点的经纬度 ... // 添加更多的标记点 ], }; }, }; </script> ``` 5. **样式及美化**: 可以根据需要为 `.marker` 类添加样式,调整图标、图标大小等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值