我在最小的示例地图上有九个数据点。
此处的地图聚类以较低的缩放级别显示正确的聚类(9个项目)。当您进一步放大时,群集将得到解析并显示单个标记。
然而,这种情况发生得太早,标记相互重叠(我们在集群上有4个,一个有5个项目,只有一个可见)。 我玩了所有三种聚类策略和eps参数都没有成功。
我将eps设置为256,并使用9个标记为此示例获得合理的结果。使用此设置,当我添加更多标记时,群集非常无用,因为只有在非常高的缩放级别才能解决这些问题。
有什么想法吗?
请看看我准备的小提琴:
http://jsfiddle.net/xv62430d/4
function startClustering(map) {
var dataPoints = [];
dataPoints.push(new H.clustering.DataPoint(52.53815990,13.41258410));
dataPoints.push(new H.clustering.DataPoint(52.53815990,13.41258410));
dataPoints.push(new H.clustering.DataPoint(52.53815990,13.41258410));
dataPoints.push(new H.clustering.DataPoint(52.53815990,13.41258410));
dataPoints.push(new H.clustering.DataPoint(52.47895150,13.45324740));
dataPoints.push(new H.clustering.DataPoint(52.47895150,13.45324740));
dataPoints.push(new H.clustering.DataPoint(52.47895150,13.45324740));
dataPoints.push(new H.clustering.DataPoint(52.47895150,13.45324740));
dataPoints.push(new H.clustering.DataPoint(52.47895150,13.45324740));
// Create a clustering provider with custom options for clusterizing the input
var clusteredDataProvider = new H.clustering.Provider(dataPoints, {
//clusteringOptions: {
// Maximum radius of the neighbourhood
//eps: 256,
// minimum weight of points required to form a cluster
//minWeight: 2
//}
});
var clusteringLayer = new H.map.layer.ObjectLayer(clusteredDataProvider);
map.addLayer(clusteringLayer);
}
var platform = new H.service.Platform({
app_id: 'DemoAppId01082013GAL',
app_code: 'AJKnXv84fjrb0KIHawS0Tg',
useHTTPS: true,
useCIT: true
});
var defaultLayers = platform.createDefaultLayers();
// Step 2: initialize a map
var map = new H.Map(document.getElementById('map'), defaultLayers.normal.map, {
center: new H.geo.Point(30.789, 33.790),
zoom: 2
});
var behavior = new H.mapevents.Behavior(new H.mapevents.MapEvents(map));
var ui = H.ui.UI.createDefault(map, defaultLayers);
startClustering(map);
$('head').append('<link rel="stylesheet" href="https://js.api.here.com/v3/3.0/mapsjs-ui.css" type="text/css" />');
答案 0 :(得分:1)
未指定群集策略将默认为 FASTGRID 策略。但是在 FASTGRID 策略中,epsilon参数(算法应该对点进行分组的半径)必须是2的幂。这是指向 API reference的链接。另外,我认为放大或缩小时 FASTGRID 不会重新计算群集,这就是我建议查看 GRID / DYNAMICGRID 策略的原因。
通过取消注释聚类选项,将策略设置为H.clustering.Provider.Strategy.GRID
并调整epsilon参数,我玩弄了你的小提琴:
...
clusteringOptions: {
strategy: H.clustering.Provider.Strategy.GRID,
// Maximum radius of the neighbourhood
eps: 30,
// minimum weight of points required to form a cluster
minWeight: 2
}
...