2017-10-20 18 views
2

Googleマップとオープンレイヤーの統合を進めています。私はthis example from documentation for openlayers 3に基づいて作業しました。オープンレイヤーでズームレベルを整数に制限する方法

私の問題は、change:resolutionイベントのol 3とol 4.4.2の動作のどこかが変更されたことです。以前は、このコード

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 

をI Googleマップとopenlayers(例のように)の間でズームを同期しようとすると、ズームごとにGoogleマップが点滅します。 Googleマップはズームの小数値をサポートしていないようです。

オープンソースのズーム値を整数に制限することも、回避することもできますか?

googleMap.setZoomを呼び出すときにopenlayersのceil/floor値を使用しようとしましたが、ズーミングにも中央の位置が変更されてしまうため、不快な動作になることがあります。

答えて

0

ピンチズームを使用すると、タブレットとトラックパッドのサポートが向上します。 http://openlayers.org/en/latest/examples/mousewheel-zoom.html

+0

あたり

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

私の問題を解決するためには表示されません。はい、ズームの最終的な値は整数ですが、それでもそれらの中間の部分を取得します。あなたは、ズーム後に欠けている –

+0

使用 'map.on( 'moveend'、()=> { はconsole.log(map.getView()。getZoom()) })' は、解像度の変更にないため、エンドズームレベル間でアニメートしています。 –

+0

私はopenlayersのアニメーションが終了した後にのみGoogleマップのズームアニメーションを開始することはできません、それは私が今持っているものがさらに奇妙に見えます –

関連する問題