fix(PlaceCard): prioritize wikidata path for boundary fetch

When clicking basemap labels with wikidata IDs (cities, parks, etc),
fetchReverse was returning the nearest POI instead of the clicked
entity, blocking the wikidata fallback that returns correct boundaries.

Changes:
- Effect 1: Skip reverse geocode when wikidataId is present
- Effect 3: Always use wikidata path when available, regardless of
  osmType/osmId presence

This fixes missing dashed outline on area feature clicks.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Matt 2026-05-01 18:21:20 +00:00
commit 2e0a885476

View file

@ -348,8 +348,9 @@ export function PlaceCard({ place, variant = "preview", expanded = true, onToggl
// Reverse geocode to get OSM type/id if not present (e.g., basemap label clicks)
useEffect(() => {
if (!hasFeature('has_nominatim_details')) return
if (osmType && osmId) return
if (wikidataId) return // Prefer wikidata path for basemap features with wikidata
if (placeLat == null || placeLon == null) return
if (osmType && osmId) return
// Skip for dropped pins - they get reverse geocoded by MapView
if (place?.source === 'map_click') return
@ -368,7 +369,7 @@ export function PlaceCard({ place, variant = "preview", expanded = true, onToggl
}
})
return () => controller.abort()
}, [placeLat, placeLon, osmType, osmId, place?.source])
}, [wikidataId, placeLat, placeLon, osmType, osmId, place?.source])
useEffect(() => {
@ -393,7 +394,6 @@ export function PlaceCard({ place, variant = "preview", expanded = true, onToggl
}, [osmType, osmId, placeLat, placeLon])
useEffect(() => {
if (osmType && osmId) return
if (!wikidataId) return
const controller = new AbortController()
fetchPlaceByWikidata(wikidataId, controller.signal).then((data) => {