Я создал проблему на GitHub в связи с тем, почему карта перемещается при загрузке MapImageSeries
'dataSource
и как с этим лучше работать.(Если у вас есть учетная запись GitHub, пожалуйста, подпишитесь на эту проблему.)
Тем временем, предполагая, что в первый раз ваш dataSource
получит данные о том, что пользователь не переместил карту, и мы хотимподдерживая homeGeoPoint
в качестве текущего центра, мы можем связать события для достижения этого.
Когда dataSource
равен "done"
с его данными, это не обязательно означает, что что-то имеетбыло сделано на фактическом уровне карты.Данные по-прежнему должны распространяться на MapImageSeries
, который по-прежнему должен создавать MapImages
для каждого элемента данных, проверять / анализировать данные там, и по какой-либо причине положение карты смещается.Итак, в первый раз, когда это происходит (используя events.once
вместо events.on
), мы затем прослушиваем MapImageSeries
'"datavalidated"
событие также только один раз (потому что "datavalidated"
будет запущен до этого, например, как только вы создадите MapImageSeries
, если данные не предоставлены или это займет некоторое время, он все равно будет запускать событие и событие "inited"
, то есть, я думаю, вы можете сказатьсама серия ничего не будет успешно отображать).
И для центрирования карты, которую мы используем chart.goHome(0);
, этот метод увеличит ваши homeGeoPoint
и homeZoomLevel
, 0
- как долго будет длиться анимациядолжен работать, то есть просто делать работу, а не анимировать.
Так что все это вместе будет выглядеть примерно так:
// Center after render
imageSeries.dataSource.events.once("done", function(ev) {
imageSeries.events.once("datavalidated", function() {
chart.goHome(0);
});
});
Вот демо:
https://codepen.io/team/amcharts/pen/239bfdc8689c65468df32d71b29759b8
Несмотря на то, что карта действительно перемещается после загрузки MapImageSeries
, затем она перецентрируется с приведенным выше кодом, на самом деле я больше не видел сдвига карты.Так что, мне кажется, приведенный выше код выполняет работу по поддержанию homeGeoPoint
.Дайте мне знать, если это все еще имеет место, когда-то реализовано в вашем приложении.