2016-10-04 93 views
1

我想將我的Web-Mapping-ApplicationOL2更新爲OL3,現在我因平滑縮放問題而停止工作。在OL2中,我使用了map.fractionalZoom功能,因爲我的應用使用了一個Tile WMS,而且我必須使用滑塊或ZoomBox(OL3中的DragZoom)精確縮放到任何比例。OL3中的分數縮放(平滑縮放)

任何人都可以幫助我,並展示如何在OL3中獲得相同的功能?來自德國

感謝和問候

葉夫根T.

回答

1

的OpenLayers 3工作方式恰好相反:它支持任何分數縮放級別開箱即用,但它的控制和互動約束他們設置變焦整數縮放級別。這意味着,你可以通過編程設定一個分數縮放級別:

map.getView().setZoom(9.3); 
map.getView().fit(extent, size, {constrainResolution: false}); 

這也意味着,您可以創建自定義的控制和互動,不限制縮放級別爲整數。如果,例如,要適應視圖的確切程度您已使用ol.interaction.DragBox,您的自定義縮放框的交互看起來是這樣的:

var zoomBox = new ol.interaction.DragBox(); 
zoomBox.on('boxend', function() { 
    map.getView().fit(zoomBox.getGeometry(), map.getSize(), 
     {constrainResolution: false}); 
}); 

更新:最近的OpenLayers版本(v3.20.0及以上)在使用輪式或縮放式縮放時不再限制縮放級別。

+0

非常感謝!有用。 :) 通過使用zoomBox.getGeometry(),放大非常簡單。但只是縮小需要對zoomBox幾何進行更多的數學運算。 –

+0

所以這裏有一個簡單的解決方案:https://jsfiddle.net/c91hmhs8/1/ –

+0

這裏有一個先進的解決方案,具有放大,縮小和一些極小的箱子大小,邊界等的豁免。 https://jsfiddle.net/nkytma7k/ –