Как динамически запретить приближение карты при клике на кластер при использовании ObjectManager?
Необходимо, чтобы при нажатии на кластер, в котором все метки имеют одинаковые координаты, не происходило увеличение масштаба карты, а сразу открывался балун с информацией по меткам. Пробовал через clusterDisableClickZoom - не работает.
myObjectManager.clusters.events.add(['click'], function (e) {
var objectId = e.get('objectId'),
cluster = myObjectManager.clusters.getById(objectId),
first = cluster.features[0],
match = true,
ids = [];
for (var i = 0; i < cluster.features.length; i++) {
let feature = cluster.features[i];
ids.push(feature.place_id);
if (i > 0 && match) {
match = first.geometry.coordinates[0] == feature.geometry.coordinates[0] &&
first.geometry.coordinates[1] == feature.geometry.coordinates[1];
}
}
myObjectManager.options.set('clusterDisableClickZoom', match);
...
});
Ответы (1 шт):
Автор решения: YaSupport
→ Ссылка
Если начать отлов нажатия чуть раньше (по mousedown) и добавить в первую строку функции принудительное отключение автозума 'clusterDisableClickZoom', true, кластеры с точками из одной координаты отрабатывают так, как вам нужно.
myObjectManager.clusters.events.add(['mousedown'], function (e) {
myObjectManager.options.set('clusterDisableClickZoom', true);
var objectId = e.get('objectId'),
cluster = myObjectManager.clusters.getById(objectId),
first = cluster.features[0],
match = true,
ids = [];
for (var i = 0; i < cluster.features.length; i++) {
let feature = cluster.features[i];
ids.push(feature.place_id);
if (i > 0 && match) {
match = first.geometry.coordinates[0] == feature.geometry.coordinates[0] &&
first.geometry.coordinates[1] == feature.geometry.coordinates[1];
}
}
myObjectManager.options.set('clusterDisableClickZoom', match);
});