diff --git a/packages/script/src/runtime/components/GoogleMaps/ScriptGoogleMaps.vue b/packages/script/src/runtime/components/GoogleMaps/ScriptGoogleMaps.vue index d7e67fd4d..5ae811fb5 100644 --- a/packages/script/src/runtime/components/GoogleMaps/ScriptGoogleMaps.vue +++ b/packages/script/src/runtime/components/GoogleMaps/ScriptGoogleMaps.vue @@ -308,6 +308,15 @@ onMounted(() => { if (isLocationQuery(center) && ready.value) { center = await resolveQueryToLatLng(center as string) } + // Skip setCenter if the map is already at the same position to avoid + // resetting user pan interactions on unrelated re-renders. + const current = map.value!.getCenter() + if (current) { + const newLat = typeof (center as any).lat === 'function' ? (center as any).lat() : (center as any).lat + const newLng = typeof (center as any).lng === 'function' ? (center as any).lng() : (center as any).lng + if (current.lat() === newLat && current.lng() === newLng) + return + } map.value!.setCenter(center as google.maps.LatLng) } }, { diff --git a/packages/script/src/runtime/components/GoogleMaps/ScriptGoogleMapsMarker.vue b/packages/script/src/runtime/components/GoogleMaps/ScriptGoogleMapsMarker.vue index 5ea8d52cd..5b2a982f5 100644 --- a/packages/script/src/runtime/components/GoogleMaps/ScriptGoogleMapsMarker.vue +++ b/packages/script/src/runtime/components/GoogleMaps/ScriptGoogleMapsMarker.vue @@ -1,6 +1,6 @@