首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >高德地图实现多点标注marker和动态信息窗体[通俗易懂]

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

作者头像
全栈程序员站长
发布于 2022-08-25 13:53:47
发布于 2022-08-25 13:53:47
4.6K02
代码可运行
举报
运行总次数: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
8560
vue + 高德地图
https://lbs.amap.com/api/javascript-api-v2/summary
用户4396583
2024/09/23
6620
【vue引用原生高德地图并多点标注】
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/143667.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/26
8180
地图开发添加标注物
最近几年在搞地图方面的开发,主要是循环为坐标添加标注并为标注添加弹出信息窗口,起初我的代码如下: 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.2K0
高质量编码--Excel POI点高德地图展示
Excel文件里记录着POI点信息(包含经纬度),这些记录也可以分类别保存在不同的sheet里。下面介绍如何根据sheet名称,自动把Excel里的点位信息在地图上分组点标记展示,地图展示选用高德地图API。
MiaoGIS
2023/01/18
1K0
高质量编码--Excel POI点高德地图展示
vue中引入高德地图并多点标注
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/143861.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/31
1.1K0
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.8K0
Arcgis for Javascript API下类似于百度搜索A、B、C、D marker的实现方式
看到了效果,是不是各位有点小鸡动,是不是也宠宠欲动,有木有?但是具体是怎么实现的呢?下面我来详细的给各位说说我的实现思路吧。
牛老师讲GIS
2018/10/23
6000
Arcgis for Javascript API下类似于百度搜索A、B、C、D marker的实现方式
高德地图信息框作为组件
信息框如果用html拼接字符串的方式来实现,感觉比较麻烦,下面是使用组件的方式来实现。
tianyawhl
2022/01/20
5620
被问爆的旅游网页!cursor + 腾讯云 Edge MCP + 高德地图MCP2.0,圆你一个沉浸式旅行梦
作为一个想打造旅游网页的 “技术小白”,我曾无数次被复杂的代码折磨到崩溃,在寻找稳定服务器资源时焦头烂额,更因地图数据接入的繁琐流程屡屡碰壁。想要呈现出集导航、景点推荐、行程规划于一体的旅游网页,仅凭一己之力,几乎是不可能完成的任务。直到遇见 cursor、腾讯云 Edge MCP 和高德地图 MCP2.0,我的困境才迎来转机 —— 它们就像为我量身定制的 “救星”,以各自的强大功能,填补了我技术与资源上的所有缺口,让梦想中的旅游网页从空想变为现实。
Undoom
2025/05/09
7340
基于高德地图开发 Web 应用
前段时间换了工作,从以前的 996 变成了现在的 965,周末有了一些空闲时间,于是就想着写一些文章和大家分享一下。思考了很久,最终确定了主题为前端高德地图的教程。
拿我格子衫来
2022/01/24
5.4K2
基于高德地图开发 Web 应用
高德地图绘制多边形与编辑
<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.2K0
如何在vue单页应用中使用百度地图
原文:https://www.cnblogs.com/jiekzou/p/10485604.html
周星星9527
2021/08/13
1.8K0
如何在vue单页应用中使用百度地图
前端系列19集-vue3引入高德地图,响应式,自适应
在项目目录中使用npm或yarn安装高德地图的JavaScript API库。你可以使用以下命令之一:
达达前端
2023/10/08
1.8K0
前端系列19集-vue3引入高德地图,响应式,自适应
半个小时教你写一个装(bi)逼(she)之地图搜租房
首先需要一个Python3环境,怎么准备我就不多说了,实在不会的出门右转看一下廖雪峰老师的博客.
李国宝
2018/05/23
1.1K1
高德地图 HELLO,AMAP!
今天实在是有点慌啊,慌在不知道看什么啊,翻了半天,还是想看个新东西,本来看数据仓库的,结合买的阿里云也能用起来,但看到技术的时候太偏阿里技术了,要不下午再说吧。
疯狂的KK
2019/12/03
2.2K0
百度地图API-创建多个坐标,连线,信息提示
这是一个多坐标创建,并连线,和信息显示的例子 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> <style type="text/css"> body, html, #allm
用户1149182
2020/06/19
2K0
百度地图API-创建多个坐标,连线,信息提示
OL2中实现百度地图ABCD marker的效果
上文中提到了在Arcgis for JS中实现百度地图ABCD的marker效果,在本文,讲述如何在OpenLayers2中实现类似的效果。
牛老师讲GIS
2018/10/23
1.4K0
OL2中实现百度地图ABCD marker的效果
高德地图开放平台 原
平台地址:http://lbs.amap.com/api/javascript-api/example/amap-ui-districtcluster/custom-cluster-marker
晓歌
2018/08/15
8.4K0
高德地图开放平台
                                                                            原
百度地图使用记录
loadBaiduMap.js export default function loadBaiduMap(ak) { return new Promise(function (resolve, reject) { // window.onload = function () { // resolve(BMapGL) // } window.init = function(){ resolve(BMapG
tianyawhl
2022/12/21
6600
相关推荐
高德地图实现多点标注功能
更多 >
领券
一站式MCP教程库,解锁AI应用新玩法
涵盖代码开发、场景应用、自动测试全流程,助你从零构建专属AI助手
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档