2017-10-20 124 views
2

我正在開發Google地圖和開放層之間的集成4.我的工作基於this example from documentation for openlayers 3如何將縮放級別限制在開放層中的整數

我的問題是,ol 3和ol 4.4.2之間的某個地方的行爲change:resolution事件發生了變化。此前該代碼

view.on('change:resolution',() => { 
    console.log(view.getZoom()) 
}) 

只被調用一次每個鼠標滾輪旋轉和記錄(例如):

5 

,現在它會產生這樣的:

4.017277252772164 
4.08563754449778 
4.152661471658049 
4.522609511830051 
4.691606503462093 
4.793368457643155 
4.891103916717288 
4.980192777999678 
4.999621855713164 
5 

所以,當我嘗試同步Google地圖和開放式廣告之間的縮放比例(如示例中所示),這會導致Google地圖在每次縮放時閃爍。谷歌地圖似乎不支持縮放的分數值。

我可以將開源圖像縮放值限制爲整數還是做一些變通?

我試圖在調用googleMap.setZoom時使用openlayers zoom的ceil/floor值,但由於縮放還涉及到中心位置的變化,所以會導致不舒服的行爲。

回答

0

默認行爲是爲了更好的平板和觸控板支持捏縮放。

interactions: ol.interaction.defaults({mouseWheelZoom: false}).extend([ 
     new ol.interaction.MouseWheelZoom({ 
     constrainResolution: true // force zooming to a integer zoom 
     }) 
    ]) 

http://openlayers.org/en/latest/examples/mousewheel-zoom.html

+0

這似乎並沒有解決我的問題。是的,縮放的最終值是一個整數,但我仍然得到這些中間分數。 –

+0

使用 'map.on( 'moveend',()=> { 的console.log(map.getView()。getZoom()) })' 你想要變焦結束後沒有對決議的變化,因爲它在縮放級別之間進行動畫處理。 –

+0

我只能在openlayers動畫結束後才能啓動Google地圖縮放動畫,現在看起來更怪異 –