2016-10-04 91 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/ –