amcharts 地图 - 更新后保持用户的缩放级别

amcharts maps - maintain user's zoom level after update

我正在使用 amCharts 地图在地图上显示标记(对象)。由于经度和纬度的变化,这些对象一直在移动,所以我每 4 秒调用 validateData() 以使用对象的新位置更新地图。

Items on map

问题是在用户放大后,validateData() 调用重新绘制地图并缩小。如何在保持相同缩放级别的同时重新绘制地图?

在调用 validateData 之前,您需要将地图的当前 zoomLevel、zoomLongitude 和 zoomLatitude 存储在地图的 dataProvider 中。这是来自 a demo on AmCharts' website 的片段,正是这样做的:

  // set same zoom levels to retain map position/zoom
  map.dataProvider.zoomLevel = map.zoomLevel();
  map.dataProvider.zoomLatitude = map.dataProvider.zoomLatitude = map.zoomLatitude();
  map.dataProvider.zoomLongitude = map.dataProvider.zoomLongitude = map.zoomLongitude();
  // update map
  map.validateData();

其实这段代码是取自amcharts网站的官方例子,但是代码中有一个错误导致地图缩放不慢,它"jumps"到地图的中心,然后放大到选中的国家。解决方案如下

  map.dataProvider.zoomLevel = map.zoomLevel();
  map.dataProvider.zoomLatitude = map.dataProvider.zoomLatitudeC = map.zoomLatitude();
  map.dataProvider.zoomLongitude = map.dataProvider.zoomLongitudeC = map.zoomLongitude();

  // update map
  map.validateData();