我正在开发Google map 和openlayers 4之间的集成。我的工作基于this example from documentation for openlayers 3

我的问题是olt 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 map和openlayers之间的缩放(如示例中)时,它将导致google map在每次缩放时都闪烁。看来Google map 不支持缩放的分数值。

我可以将openlayer缩放值限制为整数还是可以解决一些问题?

我在调用googleMap.setZoom时尝试使用openlayers缩放的ceil / floor值,但是因为缩放还涉及到中心位置的更改,所以会导致抖动,令人不快的行为。

最佳答案

默认行为是在缩放时更好地支持平板电脑和触控板。

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

关于openlayers - 如何将缩放级别限制为openlayers中的整数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46844802/

10-13 08:51