Openlayers получают значения свойств из файла Geoson - PullRequest
0 голосов
/ 09 октября 2019

У меня есть вопрос, у меня есть файл sqlite.geojson, и я хотел бы получить из него такую ​​информацию, например, как я могу получить значение «ОРИЕНТАЦИЯ», которое равно «30»?

вот sqlite.geojson

{
"type": "FeatureCollection",
"name": "TARGET",
"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } },
"features": [
{ "type": "Feature", "properties": { "ID": 1, "COORDINATEX": "23", "COORDINATEY": "46", "ORIENTATION": "30" }, "geometry": null },
{ "type": "Feature", "properties": { "ID": 2, "COORDINATEX": "25", "COORDINATEY": "46", "ORIENTATION": "90" }, "geometry": null }
]
}

и код Js

var vectorGeojson = new VectorSource({
  format: new GeoJSON(),
  url: 'data/sqlite.geojson'
});

var vectorGeojsonLayer = new VectorLayer({
  source: vectorGeojson,
  style: styleFunction
});

var map = new Map({
    controls: defaultControls().extend([mousePositionControl]),
    layers: [rasterLayer, vectorLayer, vectorGeojsonLayer],
    target: 'map',
    view: new View({
      center:fromLonLat([-46.68, -23.59]),
      zoom: 2
    })
});

1 Ответ

1 голос
/ 10 октября 2019

Если вы не получили никакой ошибки загрузки об этом Geojson, и он загрузился правильно, сначала вам нужно получить объекты из источника следующим образом:

var features = vectorGeojson.getFeaturesCollection();

После получения объектов из слоя теперь вы можете выполнять их итерациюпо циклу и получить нужный вам атрибут, что-то вроде этого:

features.forEach(function(feature){
    var attribute = feature.get("attribute name");
    // Do something
});

Это даст вам определенное поле для всех функций. Также вы можете добавить некоторые операторы if. например, вам нужна только вторая «ОРИЕНТАЦИЯ».

features.forEach(function(feature){
    if(feature.get("ID") == 2){
        var attribute = feature.get("attribute name");
        // Do something
    }
});

Надеюсь, это поможет.

...