2015-05-29 136 views
0

我使用OpenLayers熱圖,我想每2秒刷新一次KML向量。所以我認爲可能只是刪除圖層,刷新圖層,然後再次在地圖中添加圖層。但迄今爲止沒有任何工作。刷新ol.layer.heatmap KML每2秒和更新層

這裏是我的腳本:

var vector = new ol.layer.Heatmap({ 
    source: new ol.source.Vector({ 
    url: 'tweets.php', 
    format: new ol.format.KML({ 
     extractStyles: false 
     }) 
    }), 
blur: parseInt(6, 10), 
radius: parseInt(4, 10) 
}); 

var raster = new ol.layer.Tile({ 
    source: new ol.source.Stamen({ 
    minZoom: 3, 
    maxZoom: 8, 
    layer: 'toner' 
    }) 
}); 

var koordinate = 5.9; 

var map = new ol.Map({ 
    target: 'map', 
    controls: [] , 
    interactions: ol.interaction.defaults({ 
     dragging: false, 
     dragPan: false 
    }), 
    view: new ol.View({ 
     center: ol.proj.transform([10.5 , 51.0], 'EPSG:4326', 'EPSG:3857'), 
     minZoom: koordinate, 
     maxZoom: koordinate, 
     zoom: koordinate 
    }) 
}); 

map.addLayer(raster); 

map.addLayer(vector); 

blur.addEventListener('input', function() { 
    vector.setBlur(parseInt(blur.value, 10)); 
}); 

radius.addEventListener('input', function() { 
    vector.setRadius(parseInt(radius.value, 10)); 
}); 

編輯:這是對我的問題,最好的解決辦法,但我不工作。

setInterval(function() { 
       vector.loaded = false; 
       vector.setVisibility(true); 
       vector.redraw({ force: true }); 
      }, 2000); 

我也嘗試了一切與SetInterval,但每次它是不正確的或者是錯誤的。我想ol.layer.heatmap很難解決這個問題。

+0

「*但目前爲止沒有任何工作*」,「*它不正確或錯誤*」 - 您必須比這更具體。至少你需要包含你正在談論的代碼。 – kryger

+0

好吧,我添加了一些我的代碼。也許現在有人可以幫助我。 – mark96

+0

我從來沒有專門使用過OpenLayers3,但我找不到任何提及'ol.layer.Heatmap'上的'redraw'方法 - 是否有可能使用了OL2文檔而不是OL3?無論如何,看起來你的問題已經在[gis.stackexchange]上得到了解答(http://gis.stackexchange.com/a/121439/6990)。問GIS問題往往是一個更好的地方。 – kryger

回答

0

ol.layer.Heatmap不提供「重繪」方法。

ol.Map確實提供了一個render方法,但您應該使用該方法。請考慮動態數據示例以獲取更多信息:http://openlayers.org/en/v3.5.0/examples/dynamic-data.html

+0

好吧,我看着它。但我不知道,如何將它用於我的矢量圖層。如何刷新地圖,KML中的新點顯示在地圖上?也許你可以幫助我多一點。 :) – mark96

+0

@ mark96請使用您對代碼進行的最新更改更新上面的代碼示例。沒有一個更好的理解你在做什麼,沒有人可以協助:) 例如,我認爲沒有價值將受到影響'vector.loaded'和'vector.redraw()'是不是真正的方法(在openlayers-3中)。 – lazaruslarue