我有一個問題,顯示從服務器加載geojson文件的地圖上的幾個點。 geojson文件發生變化,所以我想要一個刷新地圖圖層的好方法。要做到這一點,我創建了source.Vector(的OpenLayers的3.17.1版)點使用source.Vector加載函數不顯示在地圖上
var locationSource = new ol.source.Vector({
format: new ol.format.GeoJSON({
defaultDataProjection :'EPSG:4326'
}),
loader: vectorLoader,
strategy: ol.loadingstrategy.all
});
功能vectorLoader
,其執行XHR調用來檢索最新版本的GeoJSON的文件。這已經模擬了下面的jsfiddle
的GeoJSON的文件具有有效的JSON,因爲在地圖上顯示的點,如果我使用的使用URL屬性,而不是像這樣的加載器source.Vector對象:
var locationSource = new ol.source.Vector({
url: '/openlayers/location.geojson',
format: new ol.format.GeoJSON({
defaultDataProjection :'EPSG:4326'
})
});
我會用這個,但是當新文件可用時使用緩存版本的geojson文件是非常可怕的。我想要一些更可靠的東西,這就是爲什麼我試圖讓它與loader
一起工作。
以上的jsfiddle鏈接了所有的代碼,它似乎運行正常,但點從未露面addFeatures
後的地圖,坐落在這裏:
onSuccess: function(response) {
var format = new ol.format.GeoJSON();
var features = format.readFeatures(response, {
featureProjection: 'EPSG:4326'
});
source.addFeatures(features);
console.info(source.getFeatures());
map.updateSize();
source.changed();
你會看到,沒有點顯示出對映射在jsfiddle中提供的數據。我覺得我在這裏缺少一些基本的東西,但是在找到很多解決方案之後,沒有任何工作。我似乎需要在「addFeatures」加載完成後再次執行樣式函數。這可以在上面的jsfiddle的控制檯日誌中看到。
是的,忘了複製半徑。試圖讓我的小提琴儘可能簡單,以顯示問題,我錯過了它。我是開放層和GIS的新手,但仍然陷於一些基本的東西。謝謝!! – GoinOff