Improve display of boundaries like cities, states, etc.

This commit is contained in:
2026-02-23 21:14:40 +04:00
parent d9645d1a8c
commit 8217e85836
2 changed files with 53 additions and 9 deletions

View File

@@ -165,12 +165,35 @@ out center;
normalizeOsmApiData(elements, targetId, targetType) {
if (!elements || elements.length === 0) return null;
const mainElement = elements.find(
let mainElement = elements.find(
(el) => String(el.id) === String(targetId) && el.type === targetType
);
if (!mainElement) return null;
// If it's a boundary relation, try to find the label or admin_centre node
// and use that as the main element (better coordinates and tags).
if (targetType === 'relation' && mainElement.members) {
const labelMember = mainElement.members.find(
(m) => m.role === 'label' && m.type === 'node'
);
const adminCentreMember = mainElement.members.find(
(m) => m.role === 'admin_centre' && m.type === 'node'
);
const targetMember = labelMember || adminCentreMember;
if (targetMember) {
const targetNode = elements.find(
(el) =>
String(el.id) === String(targetMember.ref) && el.type === 'node'
);
if (targetNode) {
mainElement = targetNode;
}
}
}
let lat = mainElement.lat;
let lon = mainElement.lon;