JavaScriptの知識もなく調べながら作業をしております。
ド素人ですが、よろしくお願いします。
WEB上にgooglemapを表示させて、マーカーと情報ウィンドウを表示させる予定です。
イメージとしては、「http://www.mishima-kankou.com/play/#map_c1」のような感じで、
予めマーカーと情報ウィンドウは表示させておきます。
そこで情報ウィンドウが重なった時に、重なり順を上にしたいと思うのですが可能でしょうか?
マーカーについては、マウスオーバーしたら、ZIndexを大きくすると出来るのですが、
情報ウィンドウのマウスオーバーが分かりません。
サンプルサイトなどがあれば、教えてください。よろしくお願いします。
No.1ベストアンサー
- 回答日時:
こんにちは
ご存知のように、map APIには関連要素にイベント処理をバインドする方法として、
event.addListener()
addDomListener()
などが用意されています。
https://developers.google.com/maps/documentation …
一方で情報ウィンドウに設定されているイベントには、「closeclick」や「position_changed」などしかなく、マウスオーバーは設定されていないようです。
https://developers.google.com/maps/documentation …
それなので、上記のメソッドではマウスオーバーのイベントは取得できないものと考えられます。
ご質問のようなことを実現する方法として思いつくのは、
1)マウスオーバーイベントが設定されているオブジェクトで、情報ウィンドウの代用をする。
(Data、Marker、Polyline、Polygonなど)
2)情報ウィンドウに対応するDOMを調べて、DOM要素に直接イベントをバインドする。
(情報ウィンドウは「gm-style-iw」クラスのdiv要素として生成されるようですので…)
といったところでしょうか。
2)はマップの構造をきちんと把握しないといい加減にはできないので、とりあえず、1)の方法で試してみました。
とは言っても、吹き出し状のものをゼロから自作するのも面倒なので、超簡単にテストする材料として、同じgoogleさんのDynamic Iconsを利用させてもらいました。
https://developers.google.com/chart/image/docs/g …
アイコンなので、勢いマップのマーカーを利用することになります。
(両方ともマーカーになってしまうので、なんだか紛らわしいですけど・・・)
※ あくまでも、以下のようなことが可能であることの確認として試しています。
・情報ウィンドウ以外で情報ウィンドウもどきが表示できる
・マウスオーバーのイベントが取得できる
※ 実際には、マーカーではなく他のクラスを利用したほうが管理しやすい気がします。
※ 以下、試してみたサンプルです。
どのような方法が適切かわからないですが、ご参考にでもなれば…
・情報ウィンドウ(もどき)にマウスオーバーすると、情報ウィンドウが非表示になる。
・マーカー(本来のマーカー)をクリックすると、情報ウィンドウ(もどき)が表示される。
※ スクリプト中iconのurl(http~~)が小文字のままだとリンクに変換されてしまうので、一文字目をh(全角のh)に変えてありますのでご注意ください。
<div id="map" style="width:600px; height:600px;"></div>
<script type="text/javascript">
var point = new google.maps.LatLng( 35.681, 139.767 );
// マップ表示
var map = new google.maps.Map(document.getElementById("map"), {
zoom: 16,
center: point,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
// マーカー表示
var marker = new google.maps.Marker({ map:map, position:point });
// インフォ(=マーカーで代用)作成
var info = new google.maps.Marker({
map: map,
position: point,
icon: {
anchor: { x:64, y:128 },
url: "http://chart.apis.google.com/chart?chst=d_fnote&chld=balloon|2|880000|h|Tokyo Station|"
}
});
// イベント設定
google.maps.event.addListener(info, "mouseover", function(){ info.setVisible(false);});
google.maps.event.addListener(marker, "click", function(){ info.setVisible(true);});
</script>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Vba LongPtrについて教えてください 2 2022/08/19 11:14
- JavaScript React と Electron でデスクトップアプリを開発する環境について 1 2023/02/08 11:16
- Windows 10 プレビューウインドウに表示されたメッセージについて 1 2022/04/13 13:53
- その他(Microsoft Office) windows10で作業を終了する際の「保存しますか はい いいえ」を表示させずに自動で保存する方法 6 2023/03/15 11:29
- Windows 10 2つのウィンドウ選択時の表示について 10 2023/07/25 08:48
- その他(パソコン・周辺機器) デバイスのペアリングのウィンドウサイズがおかしい 1 2023/01/18 18:48
- Word(ワード) Microsoft Word2023で、修正箇所を表示させたい 1 2023/02/09 10:07
- HTML・CSS 別サイトのHTML内にある情報を自動取得して、自分のサイトに組込む方法を教えてください。 例えば、Y 1 2023/06/15 08:09
- アプリ 著作権に関する質問です 3 2023/02/11 10:31
- Visual Basic(VBA) 起動中のアプリ、ソフトの取得 3 2022/12/28 11:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Javascript_submit()完了後に処...
-
デスクトップ画面を4分割するには
-
ウィンドウ名からウィンドウオ...
-
ブラウザ(IE)からエクスプロー...
-
エクセルのシート上に別のシー...
-
VBの画面で、全ウィンドウを一...
-
子ウィンドウを常に手前表示、...
-
ポップアップと作業ウィンドウ...
-
window.Openをモーダルにできま...
-
親子関係の無いウィンドウの制御
-
サブウィンドウを指定の位置に開く
-
VBAで任意のウインドウのサイズ...
-
リンク時、親ウインドウを最前...
-
子ウィンドウの存在確認
-
インタネットからPDFファイルだ...
-
IEでのみ発生するJavaScriptエラー
-
JavaScriptで指定Windowを最大...
-
javascriptで開いたウィンドウ...
-
初心者javascript グーグルクロ...
-
マイページはどこを開くの
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのシート上に別のシー...
-
Javascript_submit()完了後に処...
-
デスクトップ画面を4分割するには
-
VBAで任意のウインドウのサイズ...
-
ウィンドウの2重起動を防止したい
-
VBの画面で、全ウィンドウを一...
-
<EXCEL/VBA> OUTLOOKのウインド...
-
ウィンドウ名からウィンドウオ...
-
ポップアップと作業ウィンドウ...
-
1クリックでモーダルを開いてか...
-
window.Openをモーダルにできま...
-
子ウィンドウの存在確認
-
子ウィンドウから親ウィンドウ...
-
親ウィンドウから開いた子ウィ...
-
JavaScriptで指定Windowを最大...
-
助けてGmailでボタン表示が消え...
-
JavaScriptでPDFを新規ウィンド...
-
初心者javascript グーグルクロ...
-
子ウィンドウより親ウィンドウ...
-
インタネットからPDFファイルだ...
おすすめ情報