Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >高德地图实现多点标注marker和动态信息窗体[通俗易懂]

高德地图实现多点标注marker和动态信息窗体[通俗易懂]

作者头像
全栈程序员站长
发布于 2022-08-25 13:53:47
发布于 2022-08-25 13:53:47
4.3K02
代码可运行
举报
运行总次数:2
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

先说一下项目对地图的需求:在后台新增地图管理模块,要求,每一辆车都在地图上有标注,而且点击标注时要显示出车辆的相关信息,比如车牌和车辆的当前状态。

下图就是实现的效果。

当然从高德地图api也能查看到这一块,比如多点标注,简单信息窗体,这些都有api,可以先看官网的,然后,再看我这篇文章,怎么融合一起,记住数据全部来自后台数据库,这样才能保证一切数据都是动态的,可实时更新的。

首先,定义map,渲染出基础的地图。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var map = new AMap.Map('container', {
    resizeEnable: true,   
    zoom: 5
});  

center我就暂时没有定义会自动定位IP的地址获取中心点。接下里需要清除障碍物,全局几个变量,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
map.clearMap();  
var markers = []; 
var infoWindow;

好的,接下里开始请求数据,数据主要包括坐标点和信息窗体要展示的参数,比如我的有车辆的运单号和车辆状态,车牌号等参数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$.ajax({
	url : "eos_TranOrderFollowing/mapcartrans.do",
	type : "get",
	dataType : "json",

	success : function(e) {
		
		// var data=[{"fLong":'112.00003','fLati':'38.2345'},{"fLong":'115.00003','fLati':'38.2345'},{"fLong":'114.00003','fLati':'38.2345'},{"fLong":'116.00003','fLati':'38.2345'}];
		// e.data = data;
		var marker;		
		for(var i=0 ; i< e.data.length;i++){
			var jfong=[ e.data[i].fLong,e.data[i].fLati];	
				marker = new AMap.Marker({
			    position: jfong,
			    zIndex: 101,
			    map:map
				});	
				console.log(e.data[3]);	
			marker.setMap(map);	
			marker.orderON=e.data[i].orderON;
			marker.tranOFID=e.data[i].tranOFID;
			marker.fhadd=e.data[i].fhadd;
			marker.sAdd=e.data[i].sAdd;
			marker.status=e.data[i].status;			
			 marker.on('click', function(e){
				
				 infoWindow.setContent("<ul class='main'><li> 运单号: <span style='color:blue'>"+e.target.orderON+"</span></li>" 
				         + "<li>  派车单号: <span style='color:blue'>"+e.target.tranOFID+"  </span></li>" 
				         + "<li>  发货地址: <span style='color:blue'>"+e.target.fhadd+"  </span></li>"
				         + "<li>  收货地址: <span style='color:blue'>"+e.target.sAdd+"  </span></li>"
				         + "<li>  车辆状态 : <span style='color:blue'>"+e.target.status +"  </span></li></ul>");
				 infoWindow.open(map, e.lnglat);
			 });
			
			
		}	// for-end
		
		infoWindow = new AMap.InfoWindow({
			isCustom:	true,
			draggable: true,  //是否可拖动
	        offset: new AMap.Pixel(0, -31),
	        content:""
	    });
		
	}
		

}) //	Ajax结束

因为,我要展示的marker是很多的,后台返回的数据肯定不止1条,所以通过for循环,拿到所有的坐标,我定义的jfong变量,比如我的就有16个坐标点,然后定义marker,把position = jfong;这样就同样可以获得16个marker点了,然后添加标注图标icon,需要自定义图标的看下官网api很简单的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
marker.setMap(map);

这样多点的marker就实现了,接下来就是信息窗体了。因为我们需要在信息窗体展示的动态数据是在success:function(E)里面的,也就是在E里面。而点击图标时,执行的function(e),这个e是高德地图定义的,这里就需要把我们自己的参数赋值到这里面,也就是代码中的 marker.参数名称 = E.data[i].参数名称,通过这样的赋值后,捏可以打印一下(e)看下数据,然后通过e.Target.参数名称 就能够拿到了。信息窗体就不用多说了,把重点的参数赋值说明白就OK啦。我是自定义的信息窗体,通过setContent 动态设置了参数。

毕竟是自定义的信息窗体,所有肯定需要关闭按钮,样式自己随便写,只需要执行关闭自定义信息窗体事件即可

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 function closeInfoWindow() {
        map.clearInfoWindow();
    }

好了,这样一个多点标注+动态信息窗体就轻松的实现了。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/143261.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
高德地图实现多点标注功能
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/143467.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/26
7230
vue + 高德地图
https://lbs.amap.com/api/javascript-api-v2/summary
用户4396583
2024/09/23
3360
【vue引用原生高德地图并多点标注】
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/143667.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/26
7590
vue中引入高德地图并多点标注
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/143861.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/31
1K0
高德地图宽度不固定的信息窗口位置偏下的解决方法
解决方法: 在setTimeout中设置宽度,原因是刚打开信息窗口Dom结构还没完全生成,获取不到元素
tianyawhl
2019/09/04
1.7K0
vue 集成高德地图进行批量标注和信息窗体展示
高德地图进行地理位置的标注和信息窗体展示是我们很常用的一个功能,其实高德api里面已经清楚的说明怎么用了,但是自己总结一下记录在自己的笔记里,也是有些许好处的。高德api 样列展示地址是:https://lbs.amap.com/api/javascript-api/example/infowindow/add-infowindows-to-multiple-markers,以及点击窗体监听事件https://lbs.amap.com/api/amap-ui/demos/amap-ui-simpleinfowindow/events,两个样列基本就实现了我们的功能,可以点击参考。
全栈程序员站长
2022/08/31
1.7K0
高德地图信息框作为组件
信息框如果用html拼接字符串的方式来实现,感觉比较麻烦,下面是使用组件的方式来实现。
tianyawhl
2022/01/20
5060
高德地图 HELLO,AMAP!
今天实在是有点慌啊,慌在不知道看什么啊,翻了半天,还是想看个新东西,本来看数据仓库的,结合买的阿里云也能用起来,但看到技术的时候太偏阿里技术了,要不下午再说吧。
疯狂的KK
2019/12/03
2K0
前端系列19集-vue3引入高德地图,响应式,自适应
在项目目录中使用npm或yarn安装高德地图的JavaScript API库。你可以使用以下命令之一:
达达前端
2023/10/08
1.5K0
前端系列19集-vue3引入高德地图,响应式,自适应
高德地图绘制多边形与编辑
<div id="GDMap" style="height: calc(100vh - 100px)"></div> <div style="display:none"> <ContextMenuCom ref="ContextMenuCom"></ContextMenuCom> </div> 使用2个插件 "AMap.MouseTool" , "AMap.PolygonEditor" 模拟数据结构  GDMap: null, lnglat
tianyawhl
2023/03/08
1.1K0
高质量编码--Excel POI点高德地图展示
Excel文件里记录着POI点信息(包含经纬度),这些记录也可以分类别保存在不同的sheet里。下面介绍如何根据sheet名称,自动把Excel里的点位信息在地图上分组点标记展示,地图展示选用高德地图API。
MiaoGIS
2023/01/18
9470
高质量编码--Excel POI点高德地图展示
如何将高德地图JS API嵌入到HTML网页内
先去https://lbs.amap.com/注册一下,直接用淘宝/QQ等OpenID既可实现注册。 没有要求实名制,填写姓名的时候,填写英文名。
繁华是客
2023/03/03
5.6K0
Arcgis for javascript实现百度地图ABCD marker的效果
在我的博客中,有一篇相关的文章,这段时间,有很多人问我求源码,只是时间过去已长,源代码已找不到,乘着这个9.3放假,又重新实现了下,并相关代码做了优化,在此贴出来,方便大家使用。
牛老师讲GIS
2018/10/23
9690
Arcgis for javascript实现百度地图ABCD marker的效果
基于高德地图开发 Web 应用
前段时间换了工作,从以前的 996 变成了现在的 965,周末有了一些空闲时间,于是就想着写一些文章和大家分享一下。思考了很久,最终确定了主题为前端高德地图的教程。
拿我格子衫来
2022/01/24
5K2
基于高德地图开发 Web 应用
半个小时教你写一个装(bi)逼(she)之地图搜租房
首先需要一个Python3环境,怎么准备我就不多说了,实在不会的出门右转看一下廖雪峰老师的博客.
李国宝
2018/05/23
1.1K1
高德地图开放平台 原
平台地址:http://lbs.amap.com/api/javascript-api/example/amap-ui-districtcluster/custom-cluster-marker
晓歌
2018/08/15
8.2K0
高德地图开放平台
                                                                            原
地图开发添加标注物
最近几年在搞地图方面的开发,主要是循环为坐标添加标注并为标注添加弹出信息窗口,起初我的代码如下: var map = new BMap.Map("Mapcontainer");   var JsonObj = eval(JsonStr);   if (JsonObj != null) {   for (var i = 0; i < JsonObj.length; i++) {   var point = new BMap.Point(JsonObj[i].Visit_GPS_Longitude, J
xiangzhihong
2018/01/29
1.1K0
如何在vue单页应用中使用百度地图
原文:https://www.cnblogs.com/jiekzou/p/10485604.html
周星星9527
2021/08/13
1.6K0
如何在vue单页应用中使用百度地图
腾讯位置服务入门 使用JavaScript API GL自定义3D地图
1. 准备 使用腾讯位置服务需要申请服务密钥 注意:此案例中需使用webservice,建议使用IP/域名授权方便测试,生产环境如需使用签名校验方式授权参考此处 JavaScript API GL官
路过君
2020/12/25
2.2K0
地图的折腾
一个纯后台人员折腾前端,最近有个地图的小需求。然后去折腾了一把百度地图。其中一个要求就是在地图按数字标注目标位置。
BUG弄潮儿
2021/09/10
7610
地图的折腾
相关推荐
高德地图实现多点标注功能
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验