百度地图添加多标记点,使用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动态生成变量名

posted @ 2022-08-11 15:17  不需要名字  阅读(810)  评论(0编辑  收藏  举报