百度地图添加多标记点,使用js生成动态变量名
项目中需要将系统内商户添加到地图上,在添加商户到地图时,使用固定变量名会导致点击事件的信息窗口只显示一个坐标,需要使用不同的变量名来进行赋值。
这时候需要使用动态的变量名来为每一个商家生成一个对象,保证信息窗口的唯一性,以及能够正确关联到对应的标记点。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<title>地图展示</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<style>
body,
html,
#container {
overflow: hidden;
width: 100%;
height: 100%;
margin: 0;
font-family: "微软雅黑";
}
.info {
z-index: 999;
width: auto;
min-width: 22rem;
padding: .75rem 1.25rem;
margin-left: 1.25rem;
position: fixed;
top: 1rem;
background-color: #fff;
border-radius: .25rem;
font-size: 14px;
color: #666;
box-shadow: 0 2px 6px 0 rgba(27, 142, 236, 0.5);
}
</style>
<script src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=您的秘钥"></script>
<script src="./resource/js/lib/jquery-1.11.1.min.js"></script>
</head>
<body>
<!--<div class = "info">最新版GL地图命名空间为BMapGL, 可按住鼠标右键控制地图旋转、修改倾斜角度。</div>-->
<div id="container"></div>
</body>
</html>
<script>
let shop_data = [];
console.log(shop_data)
let map = new BMapGL.Map('container'); // 创建Map实例
map.centerAndZoom('长沙市', 8); // 初始化地图,设置中心点坐标和地图级别
map.enableScrollWheelZoom(true); // 开启鼠标滚轮缩放
$.ajax({
type: "GET",
url: "test.getData",
dataType: "json",
success: function (data) {
var json = data.result;
shop_data = data.result.data;
for (let i = 0; i < shop_data.length; i++) {
let shop = shop_data[i];
let marker = 'marker' + i; //动态生成变量名
let point = 'point' + i; //动态生成变量名
let opts = 'opts' + i; //动态生成变量名
let infoWindow = 'infoWindow' + i; //动态生成变量名
// 创建点标记
window[point] = new BMapGL.Point(shop.lng,shop.lat); //给变量赋值
// 在地图上添加点标记
window[marker] = new BMapGL.Marker(window[point]); //给变量赋值
map.addOverlay(window[marker]); //使用变量
// 创建信息窗口
window[opts] = {
width: 300,
height: 100,
title: shop.name
};
window[infoWindow] = new BMapGL.InfoWindow('商户地址:' + shop.address + '<br>服务电话:' + shop.phone, window[opts]);//使用变量
// 点标记添加点击事件
window[marker].addEventListener('click', function () {
map.openInfoWindow(window[infoWindow], window[point]); // 开启信息窗口
});
}
}
});
<script>
本文参考:js动态生成变量名
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现