gpt4 book ai didi

javascript - 这里的 map 聚类不准确/意外行为

转载 作者:行者123 更新时间:2023-11-29 23:28:15 27 4
gpt4 key购买 nike

我在最小示例 map 上有九个数据点。

此处的 map 聚类显示了较低缩放级别(9 项)中的正确聚类。当您进一步放大时,聚类得到解析并显示单个标记。

然而,这发生得太早了,标记相互重叠(我们在集群上有 4 个项目,一个有 5 个项目,只有一个是可见的)。我尝试了所有三种聚类策略和 eps 参数但没有成功。

我将 eps 设置为 256,并为这个带有 9 个标记的示例获得了合理的结果。使用此设置,当我添加更多标记时,聚类变得毫无用处,因为只有在非常高的缩放级别才能解决杂波问题。

有什么想法吗?

请看我准备的fiddle:

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" />');

最佳答案

不指定集群策略将默认为 FASTGRID 策略。然而,在 FASTGRID 策略中,epsilon 参数(算法应将点分组的半径)必须是 2 的幂。这里是 API reference 的链接。 。此外,我认为 FASTGRID 在放大或缩小时不会重新计算集群,这就是为什么我建议研究 GRID/DYNAMICGRID 策略。

我通过取消注释集群选项,将策略设置为 H.clustering.Provider.Strategy.GRID 来玩弄你的 fiddle 。并调整 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
}

...

参见 updated fiddle

关于javascript - 这里的 map 聚类不准确/意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48265696/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com