2016-07-18 108 views
1

使用HERE maps API平移地圖時,在動畫完成後的很短時間內會觸發'mapviewchangeend'事件。這意味着難以同步,例如,單張覆蓋而沒有覆蓋的對象滯後。HERE Maps API事件延遲

var map = new H.Map(document.getElementById('mapContainer'), 
        defaultLayers.normal.map, ...  
var lMap = L.map('mapContainer', {zoomControl: false}); 

...

function onMapViewChange() { 
    lMap.setView(map.getCenter(), map.getZoom(), {animation: false}); 
} 

map.addEventListener('mapviewchange', function() { 
    onMapViewChange(); 
}); 

map.addEventListener('mapviewchangeend', function() { 
    onMapViewChange(); 
}); 

有沒有辦法消除這種延遲?我已經爲H.mapevents.Behavior嘗試過不同的動力學設置,但迄今爲止沒有成功。

+0

參見HTTP:// leafletjs .com/reference.html#map-move – xmojmr

回答

1

我認爲你可以通過view modelviewport來觸發sync事件。我似乎記得,這些事件觸發時,同步在地圖渲染...

一些挖後,我發現顯示在github上非常類似的例子:

maps-api-for-javascript-examples/ground-overlay

+0

感謝您的建議@echom。事實證明,我在錯誤的軌道上 - 即使沒有基礎層,也需要禁用單張拖動:'lMap.dragging.disable()'我的原始代碼,以及根據您的建議使用viewModel和ViewPort進行修改現在都消除了滯後。 – mayfly