2016-10-04 6 views
1

私はWeb-Mapping-ApplicationOL2からOL3にアップグレードしたいと思いましたが、今や滑らかなズームの問題によって私は止められました。 OL2では、map.fractionalZoom機能を使用しました。私のアプリでは1つのタイル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()を使用することで簡単に簡単です。しかし、Zoom-Outだけでは、ズームボックスのジオメトリ上で数学演算を行う必要があります。 –

+0

ここでは簡単な解決策があります:https://jsfiddle.net/c91hmhs8/1/ –

+0

そしてここでは、最小のボックスサイズ、枠線などのズームイン、ズームアウト、いくつかの例外を含む高度なソリューションです。 https://jsfiddle.net/nkytma7k/ –

関連する問題