GEOjson не отображается на моей карте - PullRequest
0 голосов
/ 07 января 2019

Я хочу отобразить данные геойсон на моей карте openLayers, но мои данные не отображаются, а карта даже не отображается. Я работаю с openLayers 5. У меня есть API (в node.js), который позволяет извлечь данные из моей базы данных. У меня есть файл (script.js), который позволяет отображать карту, восстанавливать данные, отправленные API и отображать данные на карте.

В script.js:

Я создаю новый vectorLayer, который содержит стиль геойсона:

 var foncier2 = new VectorLayer({
source:source,
style: function (feature, res) {
  property = feature.get("nature");
  return new  Style({
    stroke: new Stroke({
      color: [40, 40, 40, 1],
      width: 0.3
    }),
    fill: new Fill({
      color: couleur(property)
    })
  })
},});

Я запрашиваю в своем API восстановление данных с помощью обратного вызова:

`
function loadJSON(callback) {
        var xhr = new XMLHttpRequest();
        xhr.onreadystatechange = function () {
          if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
            console.log(this.responseText);
            callback(this.responseText);
          }
        };
        xhr.open("GET", "adressIP:port/endpoint", true);
        // xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        xhr.send(null);
      }`

Затем я создаю функцию, которая преобразует данные в json, а затем в GEOjson:

   var myData = JSON.parse(data);

var geojsonObject = {
 "type": "FeatureCollection",
 "crs": { "type": "name", "properties": { "name": "EPSG:4326" }},
 "features": [
   {
     "type": "Feature",
     "geometry": {
       "type": "Polygon",
       "coordinates":myData[2].geom
     }
   }
 ]};

Наконец я отображаю данные:

foncier2.getSource().clear();
foncier2.getSource().addFeatures(foncier2.getSource().getFormat().readFeatures(geojsonObject, {
  dataProjection: 'EPSG:4326',
  defaultFeatureProjection: 'EPSG:3857',
}));
foncier2.getSource().refresh();
foncier2.getSource().changed();
map.getView().fit(foncier2.getSource().getExtent());

Но
на моей карте ничего не отображается, и у меня нет ошибок в журнале консоли.

Спасибо, что помогли мне

PS: (мне удалось восстановить данные, похоже , что и координаты )

1 Ответ

0 голосов
/ 07 января 2019

Вы задаете координаты для геометрии (которая показана на скриншоте как многоугольник) вместо координат геометрии, а не для обновления типа. Попробуйте это:

var geojsonObject = {
 "type": "FeatureCollection",
 "crs": { "type": "name", "properties": { "name": "EPSG:4326" }},
 "features": [
   {
     "type": "Feature",
     "geometry": {
       "type": JSON.parse(myData[2].geom).type,
       "coordinates": JSON.parse(myData[2].geom).coordinates
     }
   }
 ]};
...