2015-05-29 2 views
0

Я использую OpenLayers Heatmap, и я хочу обновить KML-вектор каждые 2 секунды. Поэтому я подумал, что можно просто удалить слой, обновить слой, а затем снова добавить слой на карте. Но пока ничего не получилось.Обновить 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)); 
}); 

Edit: Это было моим лучшим решением для этой проблемы, но я не работал.

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

Я также попробовал все с SetInterval, но каждый раз это было не правильно или это было неправильно.

Я думаю, что ol.layer.heatmap затрудняет решение проблемы.

+0

«* Но ничего не работало до сих пор *», «* это было неправильно или это было неправильно *» - вам нужно быть более конкретным, чем это. По крайней мере, вам нужно будет включить код, о котором вы говорите. – kryger

+0

Хорошо, я добавил некоторые из моего кода. Может, теперь кто-то может мне помочь. – mark96

+0

Я никогда не использовал OpenLayers3 специально, но я не мог найти упоминания о методе 'redraw' на' ol.layer.Heatmap' - возможно ли, что оно составило или использовало OL2-документацию вместо OL3? В любом случае, похоже, ваш вопрос уже ответил [здесь, на gis.stackexchange] (http://gis.stackexchange.com/a/121439/6990). Часто лучше задавать вопросы, связанные с ГИС. – 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

Смежные вопросы