簡體   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