大量对象时自定义集群主题
custom cluster theme when high quantities of objects
基于示例
https://developer.here.com/api-explorer/maps-js/clustering/custom-cluster-theme
从 json 文件加载了 15000 个对象。
集群默认2秒创建,并绘制在地图上。自定义集群主题创建集群长发多请求:
我觉得在大数据量下使用用户集群是不行的,是吗?
一般来说,这应该是个问题,除非创建了很多未处理的事件侦听器。你能分享一个你遇到问题的例子吗?
我认为这个问题是由于在自定义主题中创建了很多 H.map.Icon 引起的,您基本上只需要 4 个可以重复使用的图标。使用全局数组 clusterMarkers 创建如下内容:
for (var i = 0; i < 4; i++) {
var diameter = 50;
switch( i ){
case 0 :
diameter = 50;
break;
case 1:
diameter = 20;
break;
case 2:
diameter = 12;
break;
case 3:
diameter = 10;
break;
};
var clusterMarker = new H.map.Icon(
clusterSvg
, {
size: {w: diameter, h: diameter},
anchor: {x: diameter/2, y: diameter/2}
}
);
clusterMarkers[i]=clusterMarker;
}
然后在主题中
switch( weight ){
case weight < 10:
i=3;
break;
case weight < 100:
i=2;
break;
case weight < 1000:
i=1;
break;
case weight < 10000:
i=0;
break;
};
var clusterMarker = new H.map.Marker(cluster.getPosition(), {
min: cluster.getMinZoom(),
max : cluster.getMaxZoom(),
icon: clusterMarkers[i],
});
基于示例 https://developer.here.com/api-explorer/maps-js/clustering/custom-cluster-theme
从 json 文件加载了 15000 个对象。
集群默认2秒创建,并绘制在地图上。自定义集群主题创建集群长发多请求:
我觉得在大数据量下使用用户集群是不行的,是吗?
一般来说,这应该是个问题,除非创建了很多未处理的事件侦听器。你能分享一个你遇到问题的例子吗?
我认为这个问题是由于在自定义主题中创建了很多 H.map.Icon 引起的,您基本上只需要 4 个可以重复使用的图标。使用全局数组 clusterMarkers 创建如下内容:
for (var i = 0; i < 4; i++) {
var diameter = 50;
switch( i ){
case 0 :
diameter = 50;
break;
case 1:
diameter = 20;
break;
case 2:
diameter = 12;
break;
case 3:
diameter = 10;
break;
};
var clusterMarker = new H.map.Icon(
clusterSvg
, {
size: {w: diameter, h: diameter},
anchor: {x: diameter/2, y: diameter/2}
}
);
clusterMarkers[i]=clusterMarker;
}
然后在主题中
switch( weight ){
case weight < 10:
i=3;
break;
case weight < 100:
i=2;
break;
case weight < 1000:
i=1;
break;
case weight < 10000:
i=0;
break;
};
var clusterMarker = new H.map.Marker(cluster.getPosition(), {
min: cluster.getMinZoom(),
max : cluster.getMaxZoom(),
icon: clusterMarkers[i],
});