MapsJavaScriptAPIでInfoWindowを一つだけ開くようにした

旅行記
この記事は約2分で読めます。

アイスコールド コカ・コーラ 全国版マップはアイコンを押したら店舗の情報を表示するようにしているが、アイコン1を押して、アイコン2を押してもアイコン1の情報ウィンドウが閉じないようになってたので、閉じるようにした。

環境情報

  • vue@3.4.30

※Vueのバージョンでvue-cliのバージョンじゃないよ!

実装はこんな感じ。

let currentInfoWindow = null; // 現在開いている情報ウィンドウを追跡する変数

const infoWindow = new google.maps.InfoWindow({...}); // 情報ウィンドウの内容

marker.addListener("click", () => {
              // 古い情報ウィンドウを閉じる
              if (currentInfoWindow) {
                currentInfoWindow.close();
              }

              // 新しい情報ウィンドウを表示
              infoWindow.open(vm.map, marker);

              // 現在の情報ウィンドウを更新
              currentInfoWindow = infoWindow;
            });

currentInfoWindowの変数を使用し、すでに情報ウィンドウが開かれていたら、close()で情報ウィンドウを閉じてから新しいウィンドウを開くというシンプルな実装。

実際に動かしてみた映像。

実装自体はシンプルだけど新しい情報ウィンドウを開く際に、古い情報ウィンドウを閉じれるのは地味だけど嬉しい機能なので実現できてよかった。

ローカルで確認しただけなので、まだ本番にあげてないけどそのうちあげる。

アイスコールド コカ・コーラ 全国版マップ

全国版マップ アイスコールドコカ・コーラ
アイスコールド コカ・コーラを販売しているお店をマップに表示するWEBサイトです。公式サイトだと店舗名と住所だけなので視覚的にとてもわかりづらいですよね。なので視覚的にわかりやすいように、MAPに起こしました。自分用として作りましたが、出先...

コメント

タイトルとURLをコピーしました