我有一個數據源的bbox策略。代碼如下所示:Openlayers bbox策略
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
});
},
我工作得很好,但是......當我平移/移動地圖那麼這裝載機被再次調用,並添加其適合新的框另一個特點。但是有很多重複的東西,因爲一些新功能和舊版本一樣。 所以我想用this.clear()
之前增加新的功能首先要明確所有的功能,但是當我添加此命令,然後裝載機運行所有的時間和我有「的不定式循環」。你知道爲什麼嗎?在撥打this.clear()
之後,如何禁用加載新功能?
編輯:
我與功能響應如下所示:
{ 「類型」: 「的FeatureCollection」, 「CRS」:{ 「類型」: 「名字」, 「屬性」: { 「名稱」: 「甕:OGC:DEF:CRS:EPSG :: 3857」}}, 「特徵」:[{ 「類型」: 「功能」, 「屬性」:{ 「ogc_fid」: 「2」 , 「名稱」: 「AL」}, 「幾何」:{ 「類型」: 「的MultiPolygon」, 「座標」: [[[...]]]}},{ 「類型」: 「功能」, 「properties」:{「ogc_fid」: 「3」,「name」:「B」},「geometr Y「:{ 」類型「: 」是MultiPolygon「, 」座標「:[[[...]]]}} .....等等
我已經刪除座標,因爲有太多了。
我的特點是通過地圖服務器生成和.map文件看起來像這樣配置:
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
你有你的特點唯一ID?如果您從地理服務器或任何服務器獲取功能,請檢查它們是否具有唯一的ID,如果不在服務器上創建唯一的ID,則問題應該消失。另外,cosider使用url函數而不是加載器。 – pavlos
@pavlos我以前的開發者已經繼承了這段代碼。將加載器更改爲url函數不能解決問題。關於獨特的ID:我已經更新了我的問題並添加了功能回覆的示例。我有一個名爲'ogc_fid'的獨特的db列。 – nospor
你能把'ogc_fid'切換到'fid'嗎? – pavlos