Подскажите пожалуйста. Возможно ли сделать сложное правило кластеризации?
Опишу исходную ситуацию:
Есть карта OL: OSM. На карте около 100 маркеров-кластеров. Графически кластеры выглядят как круги диаметром 10px. В данный момент стратегия у меня настроена на расстояние между объектами (distance: 800) и на аттрибут маркера - group
тоесть, все объекты с одной группой на расстоянии друг от друга в 800px группируются в кластер. но из за того, что некоторые кластеры очень близко друг с другом находятся (ближе чем 10px), происходит наложение их друг на друга - что не есть гуд.
Вот можно ли как то реализовать такое правило, чтоб если объекты друг от друга ближе чем 10 px , они объединялись тоже в кластер (не смотря на разные группы). но ТОЛЬКО те, которые ближе 10px, для остальных чтоб действовало старое правило (distance: 800 и аттрибут - group)
я пытался взять за основу (скелет) пример Пример кластеризации но не могу сообразить как такое rule сделать...
Код: Выделить всё
// clazz smaller than 4
strategies.push(new OpenLayers.Strategy.RuleCluster({
rule: new OpenLayers.Rule({
filter: new OpenLayers.Filter.Comparison({
type: OpenLayers.Filter.Comparison.LESS_THAN,
property: "clazz",
value: 4
})
})
}));
мне получается нужно в условие сравнивать дистанцию, + группу. И плюс одновременно чтоб работало правило группировки по атрибуту "группа" и дистанс 800.
Тоесть число логически это должно быть примерно так:
Делать кластер
ЕСЛИ:
(группа одинаковая и расстояние не больше 800 px)
ИЛИ
(расстояние меньше 10 px)