首页 > javascript相关问题

javascript相关问题

    
    var mapObj = new AMap.Map('container', {  
            resizeEnable: true,
               zoom: 5,
               zooms:[4,18],
               center: [106.485352, 34.603692]
       });
       //=======================================================
       var createMarker = function(data,h) {
                   var div = document.createElement('div');//创建一个div
                   div.className = 'circle';//添加className

                   var r = Math.floor(data.count / 1024);

                   div.style.backgroundColor = h?'yellow':'blue';//区别颜色
                   div.innerHTML = data.count || 0;//标记框里面的内容是数据里面的count/0
                   var marker = new AMap.Marker({//创建一个标记对象
                       content: div,
                       title:data.name,
                       position: data.center.split(','),
                       offset: new AMap.Pixel(-50, 5),
                       zIndex: data.count//图层的层级
                   });

                   marker.subMarkers = [];//()
                   if(data.name==='北京市'||data.name==='河南省'){
                       marker.setLabel({content:'←请点击',offset:new AMap.Pixel(45,0)})//设置点标记文本标签内容
              mapObj.setCenter(marker.getPosition());
                   }
                   if(!h){//()
                       marker.setMap(mapObj);//添加相关标记
                   }

            //
                   if(data.subDistricts&&data.subDistricts.length){//数据里面存在sub属性执行
                         for(var i = 0 ; i<data.subDistricts.length;i++){
                             marker.subMarkers.push(createMarker(data.subDistricts[i],true));
                         }//(     )
                   }
                    return marker;
       };
       //=======================================================================
  //放大黄色标记显示部分
       var _onZoomEnd = function(e) {//(点击时蓝色标记去除,黄色添加到地图里)
                   if (mapObj.getZoom() < 6) {
                             for (var i = 0; i < markers.length; i += 1) {
                                 mapObj.remove(markers[i].subMarkers)//去掉外层标记
                             }
                        mapObj.add(markers);//添加地图覆盖物数组,数组为一个或多个覆盖物。
                     }
        };
  //缩小外层的标记消失
       var _onClick = function(e) {
                   if(e.target.subMarkers.length){//数组里存在数据执行下面
                       mapObj.add(e.target.subMarkers);//外层数据标记到地图里面
                       mapObj.setFitView(e.target.subMarkers);//()
                       mapObj.remove(markers)
                   }
          };
          //==========================================================
  //创建标记在地图上形成每个标记监听点击事件,最后再监听搜房事件(zommend缩放后)  
       var markers = []; //province见Demo引用的JS文件
       for (var i = 0; i < provinces.length; i += 1) {
               var marker = createMarker(provinces[i]);
               markers.push(marker);
               AMap.event.addListener(marker, 'click', _onClick);
          };
       mapObj.setFitView();
  AMap.event.addListener(mapObj, 'zoomend', _onZoomEnd);
  
  
  

我想知道 marker.subMarkers.push(createMarker(data.subDistricts[i],true));这句话什么意思,它createMarker()为什么会在里面直接调用本身,然后这样做有什么目的,实习生希望能指点下,谢谢


这样写是考虑到data.subDistricts[]中可能会出现嵌套的情况,大概意思是河南省或北京市下的还有一些标记
你可以把这个data输出到控制台看一下具体数据

【热门文章】
【热门文章】