diff --git a/src/web/app/common/mios.ts b/src/web/app/common/mios.ts
index bf04588bcc..da1d9746a1 100644
--- a/src/web/app/common/mios.ts
+++ b/src/web/app/common/mios.ts
@@ -170,23 +170,13 @@ export default class MiOS extends EventEmitter {
 			this.streams.messagingIndexStream = new MessagingIndexStreamManager(this.i);
 		});
 
-		//#region load google maps api
-		(window as any).initGoogleMaps = () => {
-			this.emit('init-google-maps');
-		};
-		const head = document.getElementsByTagName('head')[0];
-		const script = document.createElement('script');
-		script.setAttribute('src', `https://maps.googleapis.com/maps/api/js?key=${googleMapsApiKey}&callback=initGoogleMaps`);
-		script.setAttribute('async', 'true');
-		script.setAttribute('defer', 'true');
-		head.appendChild(script);
-		//#endregion
-
 		if (this.debug) {
 			(window as any).os = this;
 		}
 	}
 
+	private googleMapsIniting = false;
+
 	public getGoogleMaps() {
 		return new Promise((res, rej) => {
 			if ((window as any).google && (window as any).google.maps) {
@@ -195,6 +185,21 @@ export default class MiOS extends EventEmitter {
 				this.once('init-google-maps', () => {
 					res((window as any).google.maps);
 				});
+
+				//#region load google maps api
+				if (!this.googleMapsIniting) {
+					this.googleMapsIniting = true;
+					(window as any).initGoogleMaps = () => {
+						this.emit('init-google-maps');
+					};
+					const head = document.getElementsByTagName('head')[0];
+					const script = document.createElement('script');
+					script.setAttribute('src', `https://maps.googleapis.com/maps/api/js?key=${googleMapsApiKey}&callback=initGoogleMaps`);
+					script.setAttribute('async', 'true');
+					script.setAttribute('defer', 'true');
+					head.appendChild(script);
+				}
+				//#endregion
 			}
 		});
 	}