![](/img/trans.png)
[英]Circle Geometry Feature not displaying when using OpenMaps / OpenLayers
[英]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.