我從第三方API提取數據,該數據給出了緯度/經度座標以及點的狀態。我目前能夠在第一次迭代中成功繪製點併爲他們提供正確的狀態。但是,如果狀態發生變化,我需要每3秒鐘更新一次自己的樣式。我試過使用mySource.changed()
,但它沒有奏效。我看了一遍又一遍,找不到解決方案,儘管這似乎並不是一件困難的事情。更新OpenLayers中的功能樣式3
我也嘗試過clear()
我的源碼每隔3秒,但隨後矢量圖層'閃爍',我需要它無縫地更新。我也嘗試刪除/重新添加整個矢量圖層。我需要使用樣式函數嗎?或功能覆蓋?爲什麼我不能在Google地圖或傳單中覆蓋樣式?
我的風格
var takenStyle = new ol.style.Style({
image: new ol.style.Icon({
src: '../_images/redMark.png',
scale: .2
})
});
var openStyle = new ol.style.Style({
image: new ol.style.Icon({
src: '../_images/greenMark.png',
scale: .2
})
});
var unsureStyle = new ol.style.Style({
image: new ol.style.Icon({
src: '../_images/yellowMark.png',
scale: .2
})
});
我如何分配的樣式/功能
if ((data.scopes[i].parking_spot.status === true)) {
var feature = new ol.Feature({
geometry: new ol.geom.Point(ol.proj.transform(pointCoords, 'EPSG:4326', 'EPSG:3857'))
});
feature.setStyle(takenStyle);
feature.setId(i);
pointSource.addFeature(feature);
UPDATE:使用Navageer·高達的建議下,我能終於想出解決辦法。我創建了第二個函數,並通過迭代功能來更新樣式。
if ((data.scopes[i].parking_spot.occupied === true && data.scopes[i].parking_spot.occupied === lastCheck[i].occupied)) {
theFeatures[i].setStyle(takenStyle);
}
你嘗試'feature.changed()'方法? [看到它](http://openlayers.org/en/v3.2.0/apidoc/ol.Feature.html?unstable=true#changed) – tfidelis
是的,我試過。似乎沒有發生。我也嘗試在pointSource上使用它。但沒有運氣。我會在設置樣式的if語句中調用我的feature.changed()嗎? –
是的,我認爲是。你能爲我們展示你的所有代碼嗎?我將創建一個jsfiddle並嘗試調試它以更好地幫助您。 – tfidelis