amcharts 地图 - 更新后保持用户的缩放级别
amcharts maps - maintain user's zoom level after update
我正在使用 amCharts 地图在地图上显示标记(对象)。由于经度和纬度的变化,这些对象一直在移动,所以我每 4 秒调用 validateData()
以使用对象的新位置更新地图。
问题是在用户放大后,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();
我正在使用 amCharts 地图在地图上显示标记(对象)。由于经度和纬度的变化,这些对象一直在移动,所以我每 4 秒调用 validateData()
以使用对象的新位置更新地图。
问题是在用户放大后,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();