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 @@