首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将openlayers中的缩放级别限制为整数

如何将openlayers中的缩放级别限制为整数
EN

Stack Overflow用户
提问于 2017-10-20 16:05:58
回答 2查看 1.3K关注 0票数 4

我正在开发谷歌地图和OpenLayers4之间的集成,我的工作基于this example from documentation for openlayers 3

我的问题是,在ol3和ol4.4.2之间的某个地方,change:resolution事件的行为发生了变化。以前的这段代码

代码语言:javascript
复制
view.on('change:resolution', () => {
    console.log(view.getZoom())  
})

在每次鼠标滚轮旋转时仅调用一次,并记录(例如):

代码语言:javascript
复制
5

现在它会产生类似这样的结果:

代码语言:javascript
复制
4.017277252772164
4.08563754449778
4.152661471658049
4.522609511830051
4.691606503462093
4.793368457643155
4.891103916717288
4.980192777999678
4.999621855713164
5

因此,当我尝试同步google地图和openlayer之间的缩放时(就像在示例中一样),它会导致google地图在每次缩放时都会闪烁。谷歌地图似乎不支持缩放的分数值。

我可以将openlayer缩放值限制为整数或做一些变通吗?

我试图在调用googleMap.setZoom时使用openlayers zoom的天花板/地板的值,但因为缩放也涉及到中心位置的改变,所以会导致抖动,令人不快的行为。

EN

回答 2

Stack Overflow用户

发布于 2017-10-21 00:23:17

默认行为是为了在收缩缩放时提供更好的绘图板和触控板支持。

代码语言:javascript
复制
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

票数 1
EN

Stack Overflow用户

发布于 2021-04-26 23:14:40

对于任何正在努力解决这个问题的人来说,我解决这个问题的方法是将默认缩放交互的zoomDuration设置为0,并结合constrainResolution属性。

中间缩放级别来自用于从一个级别缩放到另一个级别的动画(动画的默认持续时间为250ms)。通过使用constrainResolution,您可以确保Google Map可以使用一个整数值,通过将zoomDuration设置为0,您可以删除在change:resolution处理程序中导致小数值的动画。

在没有动画的情况下,结果会稍微突然一点,但这样就不会再有OpenLayers和Google Map之间的奇怪行为了。

我使用的是OpenLayers 6.5.0,但我猜它也适用于更早的版本。下面是代码的工作部分:

代码语言:javascript
复制
import { defaults } from 'ol/interaction';

// ...

this.view = new View({
    // ...
    constrainResolution: true,
});
    
const olMap = new Map({
    target: 'map',
    controls: [],
    layers: [],
    view: this.view,
    interactions: defaults({ zoomDuration: 0 }),
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46844802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档