[英]Openlayers: Vector Layer from Local Variable
我正在使用OpenLayers從json數據制作地圖。 我必須已經(使用PHP)加載一次以檢查時間戳並驗證信息。 到那時,我寧願輸出一個javascript變量,而讓OL使用它。 我似乎在文檔中什么都做不到。
理想情況下,我只是將'url': 'latest.json'
更改為'local': json_variable
var pointsSource = new ol.source.GeoJSON({
'projection': map.getView().getProjection(),
'url': 'latest.json'
});
var pointsLayer = new ol.layer.Vector({
source: pointsSource,
style: new ol.style.Style({
image: new ol.style.Icon(({
anchor: [0.5, 40],
anchorXUnits: 'fraction',
anchorYUnits: 'pixels',
src: 'openlayers/marker-icon.png',
}))
})
});
map.addLayer(pointsLayer);
您可以通過參數“對象”傳入geojson數據。
OL3 src的可讀性很強,通常閱讀它來確定要做什么比比在文檔中搜尋要快! 我假設您使用的是ol3.4或更早版本; 這是geojson的3.2 src代碼:
https://github.com/openlayers/ol3/blob/v3.2.0/src/ol/source/geojsonsource.js
您可以看到它帶有一個對象參數,該參數期望一個JS對象,這是JSON.parse("...your geojson string here...")
所以像這樣:
var geojson_cache = "<?php output from PHP here ?>"
var geojson_object = JSON.parse(geojson_cache)
var pointsSource = new ol.source.GeoJSON({
'projection': map.getView().getProjection(),
object: geojson_object
});
應該做你需要的。
僅供參考-我提到的是OL3.4或更早版本-原因是此類在3.5中不再存在。 您可以從上面的src文件中看到,該類只不過是帶有ol.format.GeoJSON
格式化程序的StaticVector的包裝器。 它已經過重構,將被ol.source.Vector
取代,並提供ol.format.GeoJSON
格式化程序。 在這些說明中閱讀“ New Vector API”:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.