Я не могу воссоздать пример проекта для автоматического импорта полигонов WFS из веб-службы. Я нашел этот пример проекта на сайте Openlayers: Пример проекта Openlayers
В этом проекте они использовали URL в переменной vectorSource. Это ссылка на сервис WFS. Я добавил несколько операторов console.log, чтобы проверить содержание ссылок и некоторых переменных. Вот прямая ссылка на работающий тестовый проект codeandbox.
В моем тестовом проекте я просто изменил URL-адрес переменной vectorSource на службу WFS, которую я намерен использовать. Но это не работает в моем случае. Я также обновил координаты центральной переменной вида внизу, чтобы он находился внутри моих полигонов. Вот прямая ссылка на мою версию проекта codesandbox.
Я также добавил сюда два файла javascript, если люди не хотят использовать проекты codeandbox и просто хотят просматривать код.
Рабочий проект от openlayers:
import "ol/ol.css";
import Map from "ol/Map";
import View from "ol/View";
import GeoJSON from "ol/format/GeoJSON";
import { Tile as TileLayer, Vector as VectorLayer } from "ol/layer";
import { bbox as bboxStrategy } from "ol/loadingstrategy";
import BingMaps from "ol/source/BingMaps";
import VectorSource from "ol/source/Vector";
import { Stroke, Style } from "ol/style";
var vectorSource = new VectorSource({
format: new GeoJSON(),
url: function(extent) {
var text =
"https://ahocevar.com/geoserver/wfs?service=WFS&" +
"version=1.1.0&request=GetFeature&typename=osm:water_areas&" +
"outputFormat=application/json&srsname=EPSG:3857&" +
"bbox=" +
extent.join(",") +
",EPSG:3857";
console.log(text);
return text;
},
strategy: bboxStrategy
});
console.log(vectorSource);
var vector = new VectorLayer({
source: vectorSource,
style: new Style({
stroke: new Stroke({
color: "rgba(0, 0, 255, 1.0)",
width: 2
})
})
});
console.log(vector);
var raster = new TileLayer({
source: new BingMaps({
imagerySet: "Aerial",
key: "BING KEY"
})
});
var map = new Map({
layers: [raster, vector],
target: document.getElementById("map"),
view: new View({
center: [-8908887.277395891, 5381918.072437216],
maxZoom: 19,
zoom: 12
})
});
исходный код моей попытки
import "ol/ol.css";
import Map from "ol/Map";
import View from "ol/View";
import GeoJSON from "ol/format/GeoJSON";
import { Tile as TileLayer, Vector as VectorLayer } from "ol/layer";
import { bbox as bboxStrategy } from "ol/loadingstrategy";
import BingMaps from "ol/source/BingMaps";
import VectorSource from "ol/source/Vector";
import { Stroke, Style } from "ol/style";
var vectorSource = new VectorSource({
format: new GeoJSON(),
url: function(extent) {
var text =
"https://geoservices.landbouwvlaanderen.be/PUBLIC/wfs?service=WFS&request=GetFeature&version=1.1.0&typename=PUBLIC:LBGEBRPERC2019&srsname=EPSG:3857&outputFormat=application/json&count=1000&bbox=" +
extent.join(",") +
",EPSG:3857";
console.log(text);
return text;
},
strategy: bboxStrategy
});
console.log(vectorSource);
var vector = new VectorLayer({
source: vectorSource,
style: new Style({
stroke: new Stroke({
color: "rgba(0, 0, 255, 1.0)",
width: 2
})
})
});
var raster = new TileLayer({
source: new BingMaps({
imagerySet: "Aerial",
key: "BING KEY"
})
});
console.log(raster);
var map = new Map({
layers: [raster, vector],
target: document.getElementById("map"),
view: new View({
center: [589973.4805179046, 6575521.818939352],
maxZoom: 19,
zoom: 15
})
});