我有一些標記根據數據庫中的一些數字著色。我的腳本會定期執行詢問我的號碼的查詢。如果滿足某些條件,我希望我的標記改變顏色,例如從綠色變為黃色。一個類似的問題是這些標記的半徑在縮放地圖時應該增加。我通過更新更改縮放時喚醒的偵聽器中的半徑解決了這個問題。var currZoom = map.getView().getZoom();map.on('moveend', function(e) { var newZoom = map.getView().getZoom(); if (currZoom != newZoom) { console.log('zoom end, new zoom: ' + newZoom); currZoom = newZoom; vectorSource.clear(); var greenStyle = new ol.style.Style({ image: new ol.style.Circle({ radius: Math.pow(33,newZoom/5)/15000, fill: new ol.style.Fill({color: 'rgba(0,255,0,0.5)'}), stroke: new ol.style.Stroke({ color: 'green', width: 1}) }) }); var yellowStyle = new ol.style.Style({ image: new ol.style.Circle({ radius: Math.pow(33,newZoom/5)/15000, fill: new ol.style.Fill({color: 'rgba(255,255,0,0.5)'}), stroke: new ol.style.Stroke({ color: 'yellow', width: 1}) }) }); var redStyle = new ol.style.Style({ image: new ol.style.Circle({ radius: Math.pow(33,newZoom/5)/15000, fill: new ol.style.Fill({color: 'rgba(255,0,0,0.5)'}), stroke: new ol.style.Stroke({ color: 'red', width: 1}) }) }); for(var i=0;i<Features.length;i++){ var oldcolor = Features[i]["g"]["e"]["a"]["a"]; if(oldcolor=="green" || oldcolor=="yellow" || oldcolor=="red"){ if(oldcolor=="green"){ Features[i].setStyle(greenStyle); } else if(oldcolor=="yellow"){ Features[i].setStyle(yellowStyle); } }}); 這有效。當我縮放半徑時,它的值會發生變化,而圓圈的尺寸也會發生變化。 我希望這會起作用,但它只會刪除我的標記。如果我放大或縮小,它們會再次出現(因為縮放偵聽器有效)。
有沒有辦法在 openlayers 中更新功能的樣式?
HUH函數
2021-08-26 20:14:58