有没有办法看到多个地标叠加在相同的位置?
如下图所示,谷歌地球,我们有办法看到它。 谢谢。 http://localhost/1337
答案 0 :(得分:1)
是的,您可以发挥想象力并制作自定义群集。请参阅此plunker demo,我使用以下函数创建类似的集群:
var displayOverlapping = function(pixel) {
var f = map.forEachFeatureAtPixel(pixel, function(ft, l) {
return ft;
});
if (f && f.get('type') == 'cluster') {
if(f.get('expanded') === true) return;
var geom = f.getGeometry(),
coord = geom.getCoordinates(),
px = map.getPixelFromCoordinate(coord),
extent = [coord[0], coord[1], coord[0], coord[1]],
ar_features = [];
sourceFeatures.forEachFeatureInExtent(extent, function(ft){
if(ft.get('type') == 'click') ar_features.push(ft);
});
var angle = (100 / ar_features.length) * 3.6;
f.set('expanded', true);
f.setStyle(style_cluster_hover);
multiLineString.setCoordinates([]);
ar_features.forEach(function(row, index){
var angle2 = index * angle,
px_end = rotate(px[0], px[1], angle2, 30),
cd_end = map.getCoordinateFromPixel(px_end);
multiLineString.appendLineString(
new ol.geom.LineString([coord, cd_end])
);
row.setGeometry(new ol.geom.Point(cd_end));
row.setStyle(style_parada);
});
}
};
该功能在pointermove
事件中触发。