Ich habe bbox strategie für eine datenquelle. Code sieht wie folgt aus:Openlayers bbox strategie
bbox: function newBboxFeatureSource(url, typename) {
return new ol.source.Vector({
loader: function (extent) {
let u = `${url}&TYPENAME=${typename}&bbox=${extent.join(",")}`;
$.ajax(u).then((response) => {
this.addFeatures(
geoJsonFormat.readFeatures(response)
);
});
},
strategy: ol.loadingstrategy.bbox
});
},
ich gut funktioniert, aber ... Wenn ich die Karte verschieben/bewegen dann diese loader ruft wieder und weitere Funktionen hinzuzufügen, die neue Box passen. Aber es gibt viele Duplikate, weil einige der neuen Funktionen genau so alt sind wie früher. Also wollte ich zuerst alle Funktionen mit this.clear()
löschen, bevor neue Funktionen hinzufügen, aber wenn ich diesen Befehl dann Loader ist läuft die ganze Zeit und ich habe "Infinitiv-Schleife". Weißt du, warum? Wie kann ich das Laden neuer Funktionen nach dem Aufruf von this.clear()
deaktivieren?
edit:
meine Antwort mit Funktionen wie folgt aussieht:
{ "type": "FeatureCollection", "crs": { "type": "Name", "Eigenschaften": {"name": "urn: ogc: def: crs: EPSG :: 3857"}}, "Merkmale": [{"Typ": "Feature", "Eigenschaften": {"ogc_fid": "2" , "Name": "AL"}, "Geometrie": {"type": "MultiPolygon", "Koordinaten": [[[]]]}}, {"type": "Feature", "Eigenschaften": {"ogc_fid": "3", "Name": "B"}, "geometr y ": { "type": "Multipolygon", "Koordinaten": [[[...]]]}} ..... und so weiter
Ich habe Koordinaten entfernt, weil es zu viele von ihnen.
Meine Funktionen werden von mapserver erzeugt und in .MAP Datei konfiguriert, die wie folgt aussieht:
LAYER
NAME "postcode_area_boundaries"
METADATA
"wfs_title" "Postcode area boundaries"
"wfs_srs" "EPSG:3857"
"wfs_enable_request" "*"
"wfs_getfeature_formatlist" "json"
"wfs_geomtype" "multipolygon"
"wfs_typename" "postcode_area_boundaries"
"wms_context_fid" "id"
"wfs_featureid" "id"
"gml_featureid" "id"
"gml_include_items" "id,postarea,wkb_geometry"
"gml_postarea_alias" "name"
"ows_featureid" "id"
"tinyows_table" "postcode_area_boundaries"
"tinyows_retrievable" "1"
"tinyows_include_items" "id,postarea,wkb_geometry"
END
TYPE POLYGON
STATUS ON
CONNECTIONTYPE POSTGIS
CONNECTION "..."
DATA "wkb_geometry FROM postcode_area_boundaries USING UNIQUE id"
DUMP TRUE
END
Haben Sie einzigartige IDs für Ihre Funktionen? Wenn Sie Ihre Features von einem Geoserver oder einem Server erhalten, prüfen Sie, ob sie eindeutige IDs haben. Wenn Sie nicht die eindeutigen IDs auf Ihrem Server erstellen, sollte das Problem verschwinden. Außerdem verwenden Sie eine URL-Funktion anstelle eines Loaders. – pavlos
@pavlos Ich habe diesen Code von früheren Entwickler geerbt. Das Ändern des Ladeprogramms in die URL-Funktion löst das Problem nicht. Über eindeutige IDs: Ich habe meine Fragen aktualisiert und ein Beispiel für eine Feature-Antwort hinzugefügt. Ich habe eine eindeutige Spalte in db, die 'ogc_fid' heißt. – nospor
Können Sie 'ogc_fid' auf' fid' ???? – pavlos