我正在尝试使用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);
答案 0 :(得分:0)
您每次都在创建一个新的群集层,这不是必需的。一旦创建了一个clusterLayer,接收到新数据后,您就可以调用
clusterLayer.setPushpins(new_arr);
以更新群集。