必应地图聚类

时间:2018-07-17 05:25:53

标签: dictionary bing-maps markerclusterer

我正在尝试使用Javascript中的bing映射标记聚类。这种情况下,我从每次调用10000次的数据库中提取了大量数据,然后通过将lat lng数组发送到来在Google Map上呈现该数据集标记簇。我的数据集包含100000个网点。我一次要提取10000个网点,因此被称为10次,因此10个簇根据缩放级别转换为一个或两个簇。

问题在于仅在加载整个数据后才显示集群。我想让它同时更新地图吗?

代码:

function initializeMap(zoom)
{
    var mapDiv = document.getElementById('newmap');
    map = new Microsoft.Maps.Map('#newmap', {
        credentials: '',
        zoom:zoom
    });
     infobox = new Microsoft.Maps.Infobox(map.getCenter(), {
        visible: false
    });
    infobox.setMap(map);
}
function addMarker1(mapData,outletname,outletData,colordata)
{

    if(clusterLayer)
    {
       clusterLayer.clear();
    }
    Microsoft.Maps.loadModule("Microsoft.Maps.Clustering", function ()
    {

            var pin = new Microsoft.Maps.Pushpin(new Microsoft.Maps.Location(mapData[i].lat, mapData[i].lng),
              {
                  icon: svgTemplate,
                  color: strokeColor,
                  text: '1',

              }
            );
            pin.metadata =
            {
              title: i,
              description: title
            };
            Microsoft.Maps.Events.addHandler(pin, 'click', pushpinClicked);
            pin.metedata = mapData[i];
            new_arr.push(pin);
        }
        clusterLayer = new Microsoft.Maps.ClusterLayer(new_arr,
        {
            clusteredPinCallback: createCustomClusteredPin,
        });
        map.layers.insert(clusterLayer);
    });

}

//this is being called as per data limit set
// new_arr is a global array which gets updated everytime with new data
addMarker1(j,outletname,outletData,colordata);

1 个答案:

答案 0 :(得分:0)

您每次都在创建一个新的群集层,这不是必需的。一旦创建了一个clusterLayer,接收到新数据后,您就可以调用

clusterLayer.setPushpins(new_arr);

以更新群集。

来源:https://msdn.microsoft.com/en-us/library/mt712808.aspx