Я хочу отобразить данные геойсон на моей карте 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: (мне удалось восстановить данные, похоже , что и координаты )