From 2e0a8854769f758108768493ad539222c413d1fd Mon Sep 17 00:00:00 2001 From: Matt Date: Fri, 1 May 2026 18:21:20 +0000 Subject: [PATCH] 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 --- src/components/PlaceCard.jsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/PlaceCard.jsx b/src/components/PlaceCard.jsx index 40c4660..8443e1f 100644 --- a/src/components/PlaceCard.jsx +++ b/src/components/PlaceCard.jsx @@ -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) => {