1. <tfoot id='C4BqL'></tfoot>
          <bdo id='C4BqL'></bdo><ul id='C4BqL'></ul>
      1. <legend id='C4BqL'><style id='C4BqL'><dir id='C4BqL'><q id='C4BqL'></q></dir></style></legend>
      2. <small id='C4BqL'></small><noframes id='C4BqL'>

      3. <i id='C4BqL'><tr id='C4BqL'><dt id='C4BqL'><q id='C4BqL'><span id='C4BqL'><b id='C4BqL'><form id='C4BqL'><ins id='C4BqL'></ins><ul id='C4BqL'></ul><sub id='C4BqL'></sub></form><legend id='C4BqL'></legend><bdo id='C4BqL'><pre id='C4BqL'><center id='C4BqL'></center></pre></bdo></b><th id='C4BqL'></th></span></q></dt></tr></i><div id='C4BqL'><tfoot id='C4BqL'></tfoot><dl id='C4BqL'><fieldset id='C4BqL'></fieldset></dl></div>

        百度地图调用点聚合和弹窗事件

        什么是点聚合 点聚合 (MarkerClusterer 标记聚合器)用来解决加载大量点要素到地图上产生覆盖现象的问题,并提高性能。显示效果如下图: 简单实例 HTML \ CSS style body, html {width: 100%;height: 100%;margin: 0;font-family: "微软雅黑";} #allmap {wi
        <legend id='bQhfi'><style id='bQhfi'><dir id='bQhfi'><q id='bQhfi'></q></dir></style></legend>
          <tfoot id='bQhfi'></tfoot>

              <small id='bQhfi'></small><noframes id='bQhfi'>

              • <bdo id='bQhfi'></bdo><ul id='bQhfi'></ul>
                  <tbody id='bQhfi'></tbody>

                1. <i id='bQhfi'><tr id='bQhfi'><dt id='bQhfi'><q id='bQhfi'><span id='bQhfi'><b id='bQhfi'><form id='bQhfi'><ins id='bQhfi'></ins><ul id='bQhfi'></ul><sub id='bQhfi'></sub></form><legend id='bQhfi'></legend><bdo id='bQhfi'><pre id='bQhfi'><center id='bQhfi'></center></pre></bdo></b><th id='bQhfi'></th></span></q></dt></tr></i><div id='bQhfi'><tfoot id='bQhfi'></tfoot><dl id='bQhfi'><fieldset id='bQhfi'></fieldset></dl></div>
                2. 什么是点聚合

                  点聚合 (MarkerClusterer 标记聚合器)用来解决加载大量点要素到地图上产生覆盖现象的问题,并提高性能。显示效果如下图:

                  简单实例

                  HTML \ CSS
                  <style>
                      body, html {width: 100%;height: 100%;margin: 0;font-family: "微软雅黑";}
                      #allmap {width: 100%;height: 500px;}
                      p {margin-left: 5px;font-size: 14px;}
                      /*隐藏百度logo*/
                      .anchorBL a img{display: none;}
                      .anchorBL span span{display: none;}
                  </style>
                  
                  <body style="min-height: 100%;">
                     <div id="allmap"></div>
                  </body>
                  
                  JS代码
                  启用点聚合功能,其中的 data 可以根据需求进行异步获取,得到的数据中应当有横纵坐标
                  可以开启定位,达到每次打开地图快速定位到相关位置
                  <script type="text/javascript" 
                         src="http://api.map.baidu.com/api?v=2.0&ak=密钥"></script>
                  <script type="text/javascript"
                          src="http://api.map.baidu.com/library/TextIconOverlay/1.2/src/TextIconOverlay_min.js"></script>
                  <script type="text/javascript"
                          src="http://api.map.baidu.com/library/MarkerClusterer/1.2/src/MarkerClusterer_min.js"></script>
                  <script>
                      // 百度地图API功能
                      var map = new BMap.Map("allmap");
                      var point = new BMap.Point(116.331398,39.897445);
                      map.centerAndZoom(point,6);
                      //启用滚轮放大缩小
                      map.enableScrollWheelZoom(true);
                  
                      // 相关数据(也可以根据需求异步获取)
                      // 可以确定的是每条数据应要有横纵坐标
                      var data = [{"mapy": "32.94584", "mapx": "112.894350", "time": "12:30"},
                          {"mapy": "33.34683", "mapx": "112.694300", "time": "11:30"},
                          {"mapy": "33.54702", "mapx": "112.094380", "time": "10:30"},
                          {"mapy": "33.148780", "mapx": "116.494390", "time": "13:30"}
                      ];
                  
                      var markers = [];
                  
                      // 遍历得到的数据
                      $.each(data, function (i, item) {
                          // 横纵坐标定点
                          var point = new BMap.Point(item.mapx, item.mapy);
                          var marker = new BMap.Marker(point);
                          // 获取数据
                          var content = item.time;
                          // 添加点击事件
                          //addClickHandler(content, marker);
                  
                          markers.push(marker);
                  
                      });
                  
                      // 根据ip定位
                      function myFun(result){
                          var cityName = result.name;
                          map.setCenter(cityName);
                          console.log("当前定位城市:"+cityName);
                      }
                      var myCity = new BMap.LocalCity();
                      myCity.get(myFun);
                  
                      // 添加点聚合效果
                      var markerClusterer = new BMapLib.MarkerClusterer(map, {markers: markers});
                  </script>
                  
                  聚合点的样式修改
                  如果觉得默认样式不好看,或者有特殊的需求,可以自定义点的样式
                  // 添加点聚合效果
                      var markerClusterer = new BMapLib.MarkerClusterer(map, {
                          markers: markers,
                         //最小的聚合数量,小于该数量的不能成为一个聚合,默认为2
                          minClusterSize: 2, 
                          styles: [{
                             // 此处URL不知道能否用本地图片,自己试了一下不能,待解答!
                              url: 'dist/img/smallred.png',
                              size: new BMap.Size(0, 0)
                          }]
                      });
                  

                  添加点击事件

                  // 添加点击事件,可在循环数据时调用
                      function addClickHandler(content, marker) {
                          marker.addEventListener("click", function (e) {
                                  openInfo(content, e)
                              }
                          );
                      }
                  
                  弹窗
                  openInfo(content, e),这里可以传需求的参数;
                  var infoWindow = new BMap.InfoWindow( 拼接数据 , opts);, 这里可以自定义拼接参数;
                  // 弹窗
                      var opts = {
                          width: 270, // 信息窗口宽度
                          height: 100, // 信息窗口高度
                          enableMessage: true//设置允许信息窗发送短息
                      };
                  
                      // 弹窗点击事件
                      function openInfo(content, e) {
                          var p = e.target;
                          var point = new BMap.Point(p.getPosition().lng, p.getPosition().lat);
                          // 创建信息窗口对象
                          var infoWindow = new BMap.InfoWindow(`<div>自定义内容</div><div>${content}</div>` , opts);
                          //开启信息窗口
                          map.openInfoWindow(infoWindow, point);
                      }
                  
                   
                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  1.InfoWindow的样式,百度是没用提供直接使用的样式表的,目前都是热心网友在实际开发中自己的经验和实战总结; 2.百度提供了InfoBox富文本标签弹出框的接口,引入InfoBox.js,即可自定义样式或丰富的边框功能,但是鼠标单击下一个标注时,已经弹出的模态框
                  我有一堆标注,不规则的散落在地图的各个地方,我想把它们展示在一个最佳视野中,要怎么操作呢?我们在百度地图API的类参考里,找到这个一个类,setViewport 。可以让一系列的标注,在地图上呈现最佳视野。具体操作如下: 一、创建地图 建立一个htm文件,把基
                  JS尾调用优化(Tail call optimization)是指在一个函数的最后一个操作是一个函数调用的情况下,JS引擎可以优化成不需要开辟新的堆栈帧,从而减少内存占用,提升性能。本文将详细介绍JS尾调用优化的实现方法。
                  setTimeout函数是JS中的一个高级函数,可以实现代码的延时执行。

                  <small id='xsQWK'></small><noframes id='xsQWK'>

                      <tbody id='xsQWK'></tbody>
                    <tfoot id='xsQWK'></tfoot>
                    • <bdo id='xsQWK'></bdo><ul id='xsQWK'></ul>
                      <i id='xsQWK'><tr id='xsQWK'><dt id='xsQWK'><q id='xsQWK'><span id='xsQWK'><b id='xsQWK'><form id='xsQWK'><ins id='xsQWK'></ins><ul id='xsQWK'></ul><sub id='xsQWK'></sub></form><legend id='xsQWK'></legend><bdo id='xsQWK'><pre id='xsQWK'><center id='xsQWK'></center></pre></bdo></b><th id='xsQWK'></th></span></q></dt></tr></i><div id='xsQWK'><tfoot id='xsQWK'></tfoot><dl id='xsQWK'><fieldset id='xsQWK'></fieldset></dl></div>

                            <legend id='xsQWK'><style id='xsQWK'><dir id='xsQWK'><q id='xsQWK'></q></dir></style></legend>