【vue2高德地图api】高德地图forEach批量添加marker点标记,点击获取item对象『全网最详细』(1)

提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

前言

不是之前的手机端项目系列,但是可以参考,以后肯定用得到!

我的需求

getList获取数据,然后把经纬度,写入到页面中,点击marker标记 可以获得该项数据,例如name或者id之类的。


页面已经展示,只看加marker标记点,跳过一、二

一、展示地图

不会展示看过我前几期教程
我这里只贴代码

data变量

data() {
    return {
		AMap: null,
		marker: null,
		list: [],
		...

methods方法

看过我前几期,可以一键赋值拿走

initMap() {
  AMapLoader.load({
    key: this.mapJsKey, // 申请好的Web端开发者Key,首次调用 load 时必填
    version: '1.4.0', // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
    resizeEnable: true, // 定位到当前位置
    plugins: [
      'AMap.ToolBar', //工具条
      'AMap.Scale',
    ], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
  })
    .then((AMap) => {
      this.AMap = AMap;
      this.map = new AMap.Map('Map', {
        viewMode: '3D', //是否为3D地图模式
        zoom: 8, //初始化地图级别 // 3-18
      });
      this.map.addControl(new AMap.Scale()); // 比例尺
      this.map.addControl(new AMap.ToolBar()); // 工具条
      this.getList();
    })
    .catch((e) => {
      console.log(e);
    });
},

在这里插入图片描述
在这里插入图片描述

二、getList获取列表数据

getList方法
获取你的列表,赋值,然后再执行setMarks方法

该处使用的url网络请求的数据。

三、写入marker标记在页面中

1、marker的官方文档

marker官方文档传送门
在这里插入图片描述

在文档中,高德地图api有提到一个参数

在这里插入图片描述
具体用法,看下面

2、setMarks方法

在这里插入图片描述

setMarks() {
  this.list.forEach((item, index) => {
    let marker = new this.AMap.Marker({
      // 经纬度对象,new AMap.LngLat(116.405467, 39.907761)
      // 也可以是经纬度构成的一维数组[116.39, 39.9]
      position: [item.longitude, item.latitude],
      title: 'aa',
      extData: { item }, // 写入你的item对象,必须要加{}
      label: '哈',
    });
    this.map.add(marker);
    marker.on('click', (e) => {
      let item = e.target.getExtData().item; // 获取item , 这个getExtData()是AMap.Marker的扩展方法
      console.log(item);
      console.log(e);
    });
  });
},

页面的点标记已经显示了

在这里插入图片描述

3 点击事件

点击后,打印的item和e

在这里插入图片描述

4 学习心得

在高德地图api教程中,的确有说明 用户自定义属性

extData参数用于 写入你自己想要的变量值,用于事件获取调用

let name='张三'
let marker = new this.AMap.Marker({
     position: [116.39, 39.9],
     extData: { name }, // 写入你的item对象
});

然后在监听marker点击事件中,

marker.on('click', (e) => {
	let name = e.target.getExtData().name;
	console.log(name); // name=张三
})

但是我翻了下高德地图的marker方法

  • 它并没有相对应的案例
    在这里插入图片描述
    跳槽是每个人的职业生涯中都要经历的过程,不论你是搜索到的这篇文章还是无意中浏览到的这篇文章,希望你没有白白浪费停留在这里的时间,能给你接下来或者以后的笔试面试带来一些帮助。

也许是互联网未来10年中最好的一年。WINTER IS COMING。但是如果你不真正的自己去尝试尝试,你永远不知道市面上的行情如何。这次找工作下来,我自身感觉市场并没有那么可怕,也拿到了几个大厂的offer。在此进行一个总结,给自己,也希望能帮助到需要的同学。

面试准备

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

面试准备根据每个人掌握的知识不同,准备的时间也不一样。现在对于前端岗位,以前也许不是很重视算法这块,但是现在很多公司也都会考。建议大家平时有空的时候多刷刷leetcode。算法的准备时间比较长,是一个长期的过程。需要在掌握了大部分前端基础知识的情况下,再有针对性的去复习算法。面试的时候算法能做出来肯定加分,但做不出来也不会一票否决,面试官也会给你提供一些思路。

  • 12
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个使用 Vue 2.x 和高德地图 API 批量添加标记的示例代码: ```html <template> <div id="map" style="height: 500px;"></div> </template> <script> import AMap from 'AMap'; export default { data() { return { map: null, markers: [ { position: [116.480983, 39.989628], title: '这是一个 marker1' }, { position: [116.490983, 39.999628], title: '这是一个 marker2' }, { position: [116.500983, 39.979628], title: '这是一个 marker3' } ] }; }, mounted() { // 创建地图实例 this.map = new AMap.Map('map', { zoom: 10, center: [116.39, 39.9] }); // 批量创建 marker this.markers.forEach(marker => { this.createMarker(marker); }); }, methods: { // 创建 marker createMarker(marker) { new AMap.Marker({ map: this.map, position: marker.position, title: marker.title }); } } }; </script> ``` 在这个示例中,我们首先在模板中创建了一个地图容器 `div`,然后在 `data` 中定义了一个 `markers` 数组,数组中包含了多个标记的位置和标题。在 `mounted` 钩子函数中,我们首先创建了地图实例,然后使用 `forEach` 方法遍历 `markers` 数组,依次调用 `createMarker` 方法创建每一个标记。 在 `createMarker` 方法中,我们使用 `AMap.Marker` 类创建了一个 marker 实例,并设置了 marker 的位置和标题,最后将 marker 添加到地图中即可。 需要注意的是,为了使用高德地图 API,我们需要先安装 `AMap` 并引入: ```bash npm install --save AMap ``` ```javascript import AMap from 'AMap'; ``` 同时,我们还需要在 `index.html` 中引入高德地图 JavaScript API: ```html <script src="https://webapi.amap.com/maps?v=1.4.15&key=YOUR_KEY"></script> ``` 其中,`YOUR_KEY` 需要替换为你自己的高德地图开发者 key。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值