天地图点聚合

2,872 阅读1分钟

不管是在什么地图中都会碰到接口返回的点位太多,导致地图比较卡或者显示不好看的情况,这时候就用到了点聚合。

  • 创建并初始化地图
  • 通过后台接口或者自定义加载点位
  • 循环点位,对这些点进行聚合
  • 修改聚合后的点位样式

<script>
    var map=""
    initMap()
    function initMap(){
        map = new T.Map('loadMap');
        map.centerAndZoom(new T.LngLat(120.5689390,30.2653626), zoom);
        initMarker()
    }
    function initMarker(){
        var markerObject
        var clustererObject 
        var pointArray=[
            {id: "bb01a3cd987f469d9e0f04dffa2d3201", point:["120.5722764100", "30.2743562500"], link: null, name: "晋欣商旅"}
            {id: "bb01a3cd987f469d9e0f04dffa2d3202", point:["120.5737974100", "30.2748042500"], link: null, name: "起点公寓"}            {id: "bb01a3cd987f469d9e0f04dffa2d3203", point:["120.5765520400", "30.2820338600"], link: null, name: "阳光公寓"}        
        ]
        for(var i=0;i<pointArray.length;i++){
            var icon;
            icon=new T.Icon({    
                iconUrl: "img/page3/position/zhgy1.png",    
                iconSize: new T.Point(20, 20),    
                iconAnchor: new T.Point(0, 0)
            });
            var point = new T.LngLat(pointArry[i].point[0],pointArry[i].point[1])            var marker = new T.Marker(point,{icon:icon})            marker.name = pointArry[i].name || ''
            markerObject.push(marker);
        }
        clustererObject = new T.MarkerClusterer(map, {markers: markerObject});  //点聚合        clustererObject.setMaxZoom(18)    //设置聚合点的最大缩放级别
        clustererObject[item].setStyles([    
            {        
                url:'img/page3/position/hlwjk.png',        
                size:[58, 75], //图片大小        
                offset:new T.Point(-15, -13), //显示图片的偏移量        
                textColor:'#fff', //显示数字的颜色        
                textSize:9,//显示文字的大小        
                range:[0, 10000],    
            }    
        ])
    }
</script>

效果图


这是我自己在项目中遇到的实际需求,有什么问题,欢迎私聊!!!