繁体   English   中英

缩放OpenLayers 4时重新设置样式功能

[英]Restyle feature when overzooming OpenLayers 4

范例图片

在上图中,左侧是使用openlayers 4.6.4自行创建的本地mbtiles数据的渲染。 右侧是显示相似内容的传单。

我遇到的问题是,在对左侧图像的数据进行过缩放时,我试图使道路的宽度(以橙色显示)保持一致或放大,该图像的最大图块细节级别为14。最后,它应该看起来像右边一样。

在OpenLayers的样式中,我目前正在根据缩放将以下更改应用于行的宽度:

var zoomAdjustment = Math.max(0, (map.getView().getZoom() - 13) * 2); width += zoomAdjustment;

尽管需要进行调整,但这是可行的。 但是,问题在于,达到zoomLevel 14后不会重新加载或重新设置样式,因此无论zoomLevel 14之后是否放大或缩小,它都将保持一致的大小,而不是变大以表示道路本身的大小。

有没有一种方法可以“重画”特征以某种方式放大它,但保持其位置和几何形状不变?

到目前为止,我已经完成了以下操作:-研究了样式和功能以及如何重绘它们,但是,阅读API的相关知识对我来说再明智不过了。 -尝试缩放宽度,但是如上所述,在找不到瓦片后,它不会继续缩放(由于数据加载方式的本质,这是合乎逻辑的)

我现在将尝试观察地图,并在更改后将其缩放到14以上,以手动覆盖要素的样式。

实际上,这就像每次通过观察地图来调整缩放比例来覆盖样式一样简单:

map.on('change', () => { 
     var zoomAdjustment = Math.max(0, (map.getView().getZoom() - 14) * 2);
     width += zoomAdjustment;
     map.getLayers().forEach((layer) => { 
        layer.setStyle(style);
     });
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM