#javascript #maps #here-api #heremaps
#javascript #Карты #здесь-api #heremaps
Вопрос:
Следуя этим 2 документам:
https://developer.here.com/documentation/examples/maps-js/clustering/custom-cluster-theme
https://developer.here.com/documentation/maps/3.1.30.3/dev_guide/topics/clustering.html
У меня есть кластер маркеров. Но целевые данные при нажатии на маркер кластера отличаются от данных при нажатии на маркер шума.
- Как я могу получить данные из кластера и маркеров шума при щелчке, чтобы отобразить их в пузырьке, не переопределяя тему? Как мне определить, какой из них был нажат: кластер или шум? Потому что, если я просто сделаю это:
clusteredDataProvider.addEventListener('tap', function(event) {
let data = event.target.getData();
console.log(data)
});
нужные мне данные будут поступать data.c.a.data
из кластера и data.a.data
из шума.
- Как мне остановить нелепый эффект увеличения и уменьшения масштаба при нажатии на маркер кластера? Потому что, если для карты установлено значение zoom 2, а маркеры шума находятся на 16, когда вы нажимаете на маркер кластера, он начинает масштабироваться полностью от 2 до 16, а затем обратно до 2, даже без возможности загрузки карт. Это ужасно. Как я могу это остановить?
Спасибо.
Ответ №1:
- Единственный способ, который работает до сих пор, — это переопределение темы и получение случайной точки при щелчке по кластеру, данные случайных точек — это тот же объект, что и данные шума. Не могу понять, как это сделать без этого.
- Чтобы остановить это безумное увеличение и уменьшение масштаба при нажатии на маркеры, я добавил:
let zoom = map.getZoom();
map.setCenter(position, zoom > 6 ? true : false);
if (zoom < 7) {
map.setZoom(7, true);
}
Это анимированное центрирование, за которым следует анимированное масштабирование. Итак, я центрирую карту без анимации при минимальном увеличении, а затем анимирую увеличение. Я анимирую центрирование только тогда, когда масштаб находится ниже уровня маркера кластера.