feat: support parcel sub-number search
This commit is contained in:
@@ -170,7 +170,7 @@ async function searchParcela(event) {
|
|||||||
typeNames: PARCEL_LAYER_NAME,
|
typeNames: PARCEL_LAYER_NAME,
|
||||||
outputFormat: "application/json",
|
outputFormat: "application/json",
|
||||||
srsName: "EPSG:3857",
|
srsName: "EPSG:3857",
|
||||||
CQL_FILTER: `cod_parcela = '${escapeCqlLiteral(parcelNumber)}'`,
|
CQL_FILTER: buildParcelSearchFilter(parcelNumber),
|
||||||
});
|
});
|
||||||
const response = await fetch(`${API_WMS}?${params}`);
|
const response = await fetch(`${API_WMS}?${params}`);
|
||||||
|
|
||||||
@@ -198,7 +198,7 @@ async function searchParcela(event) {
|
|||||||
updateParcelSearchStatus(
|
updateParcelSearchStatus(
|
||||||
features.length === 1
|
features.length === 1
|
||||||
? `Found parcel ${parcelNumber}.`
|
? `Found parcel ${parcelNumber}.`
|
||||||
: `Found ${features.length} parcels numbered ${parcelNumber}.`,
|
: `Found ${features.length} parcels matching ${parcelNumber}.`,
|
||||||
"success",
|
"success",
|
||||||
);
|
);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
@@ -207,6 +207,18 @@ async function searchParcela(event) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function buildParcelSearchFilter(parcelNumber) {
|
||||||
|
const escapedParcelNumber = escapeCqlLiteral(parcelNumber);
|
||||||
|
|
||||||
|
// Whole parcel numbers identify a group: 278 includes sub-parcels such as
|
||||||
|
// 278.1 and 278.2. A supplied sub-parcel number remains an exact lookup.
|
||||||
|
if (/^\d+$/.test(parcelNumber)) {
|
||||||
|
return `(cod_parcela = '${escapedParcelNumber}' OR cod_parcela LIKE '${escapedParcelNumber}.%')`;
|
||||||
|
}
|
||||||
|
|
||||||
|
return `cod_parcela = '${escapedParcelNumber}'`;
|
||||||
|
}
|
||||||
|
|
||||||
async function loadLayers() {
|
async function loadLayers() {
|
||||||
updateStatus("Loading WMS layers...");
|
updateStatus("Loading WMS layers...");
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user