我正在使用amCharts地圖在地圖上顯示標記(對象)。由於經度和緯度的變化,這些對象一直在移動,所以我每4秒呼叫validateData()
以更新包含對象新位置的地圖。amcharts地圖 - 在更新後保持用戶的縮放級別
的問題是,用戶放大之後,validateData()
調用重繪地圖和縮小退了出去。如何在保持相同縮放級別的同時重繪我的地圖?
我正在使用amCharts地圖在地圖上顯示標記(對象)。由於經度和緯度的變化,這些對象一直在移動,所以我每4秒呼叫validateData()
以更新包含對象新位置的地圖。amcharts地圖 - 在更新後保持用戶的縮放級別
的問題是,用戶放大之後,validateData()
調用重繪地圖和縮小退了出去。如何在保持相同縮放級別的同時重繪我的地圖?
在調用validateData之前,您需要在地圖的dataProvider中存儲地圖的當前zoomLevel,zoomLongitude和zoomLatitude。下面是從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網站,但在這使得地圖縮放不慢的代碼錯誤,它「跳」到中心然後放大到所選國家/地區。解決方案是低於
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();
謝謝,不知道我怎麼錯過了從文檔。你的解決方案就像一個魅力! –