質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Google マップ

Google Mapは、Google社がオンラインで提供している地図・ローカル検索サービスです。GIS(Geographic Information System:地理情報システム)の中の「WebGIS」に該当します。地図・航空写真・地形の表示方式があり、それぞれユーザーが縮尺を調整して表示させることができます。地域の情報サービスを検索する機能やルート検索の機能も搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

3417閲覧

Google map APIでinfobox.jsを使って複数のフキダシをマーカー毎に表示したい

Keita008

総合スコア7

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Google マップ

Google Mapは、Google社がオンラインで提供している地図・ローカル検索サービスです。GIS(Geographic Information System:地理情報システム)の中の「WebGIS」に該当します。地図・航空写真・地形の表示方式があり、それぞれユーザーが縮尺を調整して表示させることができます。地域の情報サービスを検索する機能やルート検索の機能も搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2018/03/17 11:24

編集2018/03/18 15:43

GooglemapAPIでinfobox.jsを使って複数のフキダシをマーカー毎に表示したい

いつもお世話になっております。
web制作の初心者で、どうにもわからず質問させてください。
Google map APIで複数のマーカーを設置した地図を作り、マーカーをクリックしたらフキダシが出るマップを作成しました。
デフォルトのフキダシでは見た目が良くないため、infobox.jsを使って加工したのですが、どのマーカーをクリックしても最下行のクリックイベントだけが表示されるようになってしまいました。
色々いじくっていたのですが、直せず...お知恵を貸していただけないでしょうか。

発生している問題・エラーメッセージ

リンク先のページで中央にあるマーカーをA、左上にあるマーカーをBとした場合
Bに設定したクリックイベントがAとBのどちらをクリックしても発生してしまいます。
(すごく無駄の多い記述でお恥ずかしいのですが、私が実現できた方法がこれだけでした)

該当のソースコード

javascript

1//−−−−−−−−−−−A.48号カメラ1関山トンネル宮城側−−−−−−−−−−−−−// 2var LatLng96 = new google.maps.LatLng(38.383757, 140.574769); 3 // infobox用のDOMを生成 4var contentString96 = 5 '<iframe src="frame/frame47.html" width="200px" height="180px" frameborder="0">'+ 6 '</iframe>'; 7var infowindow96 = new google.maps.InfoWindow({ 8 content:contentString96 9 }); 10var image96 = new google.maps.MarkerImage('img/cam.png'); 11var marker96 = new google.maps.Marker({ 12 position: LatLng96, 13 map: map, 14 title: "関山トンネル宮城側", 15 icon: image96 16 }); 17 18// infoboxのオプション 19 var infoboxOptions96 = { 20 content: contentString96, // 生成したDOMを割り当てる 21 pixelOffset: new google.maps.Size(-133, -40), // オフセット値 22 alignBottom: true, // 位置の基準 23 position: LatLng96, // 位置の座標 24 boxClass: "gmap-info-window", // 生成したDOMをラップするdivのclass名 25 closeBoxMargin: "0px -30px", // 閉じるボタンの位置調整 26 closeBoxURL: 'img/close.jpg' // 閉じるボタンの画像パス 27 }; 28// infoboxを生成して表示 29var infobox = new InfoBox(infoboxOptions96); 30 31// マーカーがクリックされた時にinfoboxを表示 32google.maps.event.addListener(marker96, 'click', function() { 33 if (currentInfoWindow) { 34 currentInfoWindow.close(); 35 } 36 infobox.open(map, marker96); 37 currentInfoWindow = infowindow96; 38 }); 39 40//−−−−−−−−−−−B.48号カメラ2関山トンネル山形側−−−−−−−−−−−−−// 41var LatLng97 = new google.maps.LatLng(38.392302, 140.566017); 42var contentString97 = 43 '<iframe src="frame/frame48.html" width="200px" height="180px" frameborder="0">'+ 44 '</iframe>'; 45var infowindow97 = new google.maps.InfoWindow({ 46 content:contentString97 47 }); 48var image97 = new google.maps.MarkerImage('img/cam.png'); 49var marker97 = new google.maps.Marker({ 50 position: LatLng97, 51 map: map, 52 title: "関山トンネル山形側", 53 icon: image97, 54 }); 55 56// infoboxのオプション 57 var infoboxOptions = { 58 content: contentString97, // 生成したDOMを割り当てる 59 pixelOffset: new google.maps.Size(-133, -40), // オフセット値 60 alignBottom: true, // 位置の基準 61 position: LatLng97, // 位置の座標 62 boxClass: "gmap-info-window", // 生成したDOMをラップするdivのclass名 63 closeBoxMargin: "0px -30px", // 閉じるボタンの位置調整 64 closeBoxURL: 'img/close.jpg' // 閉じるボタンの画像パス 65 }; 66// infoboxを生成して表示 67var infobox = new InfoBox(infoboxOptions); 68 69// マーカーがクリックされた時にinfoboxを表示 70google.maps.event.addListener(marker97, 'click', function() { 71 if (currentInfoWindow) { 72 currentInfoWindow.close(); 73 } 74 infobox.open(map, marker97); 75 currentInfoWindow = infowindow97; 76 }); 77

試したこと

検索で見つけた方法を参考にいじってみたのですが、正しく直せているかもわからず、マップが表示されなくなったりしたため、一旦戻しております。
■forEachを使って直す方法
https://qiita.com/takuyagoto/items/7b38cda75c3b7a41314f
■マーカーごとに違う情報ウィンドウを表示する(ページ内リンク)
https://lopan.jp/google-maps-api-plus/

補足情報(FW/ツールのバージョンなど)

CMS等を使わないXHTML1.0で出来たサイトに追加する予定です。
どんなヒントでも結構です。何卒宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

infobox.jsというライブラリを存じ上げませんが、おそらく

js

1var infobox = new InfoBox(infoboxOptions);

が2回実行されているので、後から上書きされているのが原因です。

あまりいい書き方ではないですが、infobox96のように別の名前をつければ解決するのではないかな、と思います。

投稿2018/03/17 12:48

Lhankor_Mhy

総合スコア36074

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Keita008

2018/03/18 02:50

ご回答ありがとうございます。 お返事が遅くなり申し訳ありません。 正しく書けているか不安なのですが、各マーカー毎にinfobox96、infobox97など名前を変更してみたところ、フキダシが表示されなくなってしまいました。正しく読みに行けてないのでしょうか...。 もしご覧いただけたら、お気付きの点などお教えいただければ幸いです。 以下、テストページです。 http://bit.ly/2FGKo26
Lhankor_Mhy

2018/03/19 01:19

拝見しましたが、変更されていないように見えました。フキダシも表示されているようです。
guest

0

参考ページ
このページに書かれているように、マーカーごとにクリックイベントを張る必要があるのではないでしょうか。

投稿2018/03/17 11:32

turbgraphics200

総合スコア4267

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Keita008

2018/03/17 12:37

回答ありがとうございます。 AとBのフキダシ内容が同じになってしまっていまして、異なる内容が出るようにしたいのです。
Keita008

2018/03/17 12:38

中央のAには「関山トンネル宮城側」 左上のBには「関山トンネル山形側」と出したいのですが、ABどちらにもBの内容が表示されてしまうのです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問