feat: support parcel sub-number search
This commit is contained in:
@@ -170,7 +170,7 @@ async function searchParcela(event) {
|
||||
typeNames: PARCEL_LAYER_NAME,
|
||||
outputFormat: "application/json",
|
||||
srsName: "EPSG:3857",
|
||||
CQL_FILTER: `cod_parcela = '${escapeCqlLiteral(parcelNumber)}'`,
|
||||
CQL_FILTER: buildParcelSearchFilter(parcelNumber),
|
||||
});
|
||||
const response = await fetch(`${API_WMS}?${params}`);
|
||||
|
||||
@@ -198,7 +198,7 @@ async function searchParcela(event) {
|
||||
updateParcelSearchStatus(
|
||||
features.length === 1
|
||||
? `Found parcel ${parcelNumber}.`
|
||||
: `Found ${features.length} parcels numbered ${parcelNumber}.`,
|
||||
: `Found ${features.length} parcels matching ${parcelNumber}.`,
|
||||
"success",
|
||||
);
|
||||
} 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() {
|
||||
updateStatus("Loading WMS layers...");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user