首页 > 其他分享 >高德地图 API,点击地图标记获取自定义标记 (Marker) 中的信息

高德地图 API,点击地图标记获取自定义标记 (Marker) 中的信息

时间:2022-10-30 20:40:05浏览次数:46  
标签:自定义 dom 标记 地图 mapEvent 添加


高德地图 API,点击地图标记获取自定义标记 (Marker) 中的信息

通过 ​​高德地图 JS Web 添加自定义图标,自定义窗口标记​​ 已经能在地图中正常添加自定义标记了
这篇文章讲讲点击标记时,如何从自定义标记中获取你需要的信息,如何预置一些你自己的信息。

一、需求

我已经定义了一个这样的地图,并添加了这些标记,现在需要在点击这些标记的时候获取到对应的项目 id

高德地图 API,点击地图标记获取自定义标记 (Marker) 中的信息_javascript

二、探索解决

没找到官方的例子,所以自己解决。

1. 如何往地图中添加标记

标记的添加是这样的过程(具体在上面提到的链接中有,不再冗述):

  1. 新建 ​​AMap.Marker​​ 的地图标记对象
  2. 将这些 ​​Markers[]​​ 添加到已经建好的地图对象中
  3. 标记就能正常呈现到地图中了

2. 给标记添加点击事件

在上面的第2步中,可以给 ​​Marker​​​ 添加点击事件,跟普通的 ​​dom​​​ 一样操作,它的格式是这样的:
我这里定义的是自定义的标记点,并在其 html 结构中添加了名为 ​​​data-projectid​​ 的参数

// 1. 新建 Marker
let marker = new AMap.Marker({
position: [
Number(projectItem.prjinfo.location.longitude),
Number(projectItem.prjinfo.location.latitude),
],
offset: new AMap.Pixel(0,-20),
content: `
<div data-projectid="${projectItem.id}" class="marker ${projectItem.status === 'offline'? 'offline': ''}">
<div class="title">${projectItem.prjinfo.projectname}</div>
<div class="note">位置: ${projectItem.prjinfo.location.detail}</div>
<div class="note">设备: ${projectItem.prjinfo.deviceCnt} 个</div>
<div class="note">状态: ${projectItem.status === 'offline'? '离线': '在线'}</div>
</div>`,}]

// 2. 给这个 Marker 添加点击事件
marker.on('click', mapEvent => {
console.log(mapEvent.target.dom.getElementsByClassName('marker')[0].getAttribute('data-projectid'))
console.log(mapEvent.target)
})

// 3. 添加到地图中
map.add(marker)

3. 获取自定义标记中的自定义参数值

这里我们需要获取到上面提前定义好的 ​​data-projectid​​​ 值。
答案全在 ​​​mapEvent​​​ 上,来看一下 ​​mapEvent.target​​ 内都有什么:

高德地图 API,点击地图标记获取自定义标记 (Marker) 中的信息_javascript_02


我们需要的是 ​​mapEvent.target.dom​​ 中的内容,它是一个 dom 对象:

高德地图 API,点击地图标记获取自定义标记 (Marker) 中的信息_html_03


获取到了它,就能使用 dom 的操作方法对齐进行取值了:

如果对 dom 的操作方法不太了解,最好去找下相送资料看一下,常见的就是:

  • ​getElementById()​
  • ​getElementByClassName()​
  • ​getElementByTagName()​

像下面这样,我们就取到了它的 ​​data-projectid​​ 属性值

mapEvent.target.dom.getElementsByClassName('marker')[0].getAttribute('data-projectid'))

高德地图 API,点击地图标记获取自定义标记 (Marker) 中的信息_javascript_04

4. 做后续操作

取到值之后就可以了,你想怎么处理怎么处理就行了,比如用这个值去跳转到对应的项目中,用这个值去获取对应项目的信息等


标签:自定义,dom,标记,地图,mapEvent,添加
From: https://blog.51cto.com/kylebing/5807822

相关文章

  • 第122期:高德地图绘制热力图遇到的一个问题
    封面图中午出去吃饭拍的一张图片【SRR308自动驾驶毫米波雷达】场景项目中有个地方需要绘制热力图,第一个版本比较简单,服务端用python的库生成一个热力图的静态资源(html文件)......
  • (美化)WordPress网站添加自定义字体
    背景通过CSS属性@font-face和font-family可以实现加载自定义webfont,改变网页字体,实现美化效果。1.引用字体文件出于版权风险考虑,尽量使用免费可商用的字体作为webfont。本......
  • Flutter集成高德地图
    Flutter集成高德地图,看官方文档写的不是很清楚,有些功能还没有移植到Flutter上,导致集成的时候遇到一些问题,把遇到的问题记录下来,方便之后查询导入库:在flutter项目的pubs......
  • Vue3——自定义组件-插件
    Vue3自定义指令插件官网链接:https://cn.vuejs.org/guide/reusability/custom-directives.html#introduce1.自定义指令:1.1自定义指令声明局部声明:constfocus={......
  • antd的update组件自定义上传样式及列表样式
    项目需求按UI设计上传的样式需要把showUploadList={false},自己写上传列表//本次上传的文件const[fileList,setFileList]=useState([]);//初始化时存储之前上传......
  • Vue的自定义组件
    Vue的自定义组件自定义组件的作用是为了提高复用性,减少重复的代码,提高可维护性全局组件语法:vue.component("自定义组件名称",{自定义组件结构})vue.component("自......
  • 自定义jar包的使用
    1.先生成或者下载jar包到本地lib文件夹2.通过命令把jar包加到本地maven仓库命令把jar包加到本地maven仓库mvninstall:install-file-Dfile=ctg-ag-sdk-core-2.5.0-20220......
  • DOM第四章tab切换和自定义属性节点操作
    tab切换和自定义属性京东tab栏切换<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge">......
  • c#Winform自定义控件-信号灯(工业)-HZHControls UCSignalLamp 使用
     想要官网这个效果,自己琢磨了下,记录一下   一、拖一个UCSignalLamp控件   二、设置指示灯的属性//设置指示灯颜色(不闪烁只用写一个......
  • 如何不改动 GatewayWorker 依赖包下自定义协议
    前言:     GatewayWorker是Workerman的一个框架,对应用层开发者更友好。GatewayWorker多了一个网关,也就是Gateway,负责与客户端连接,消息转发等。而自定义的协......