簡體   English   中英

Openlayers:局部變量的矢量層

[英]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”:

https://github.com/openlayers/ol3/releases/tag/v3.5.0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM