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

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

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

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

Google マップ

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

244閲覧

GoogleMap JavaScript APIにて、クラスターと同時にウィンドウを表示したい

yoshi1125hisa

総合スコア12

JavaScript

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

Google マップ

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

3クリップ

投稿2019/05/10 00:36

編集2019/05/10 00:59

Javascript(Onsen-UI)にてGoogleMapを使用してアプリを開発しています。
質問内容としては、こちらのマーカークラスタリング

https://developers.google.com/maps/documentation/javascript/marker-clustering

を使用しようとした際に、マーカーを押すと出現するウィンドウを作りたいのですが、コードが動いてくれない状態です。
下記が、自分の記述したコードになります。

let infoWindow = []; let locations = [ // マーカーを立てる場所名・緯度・経度 { name: 'A', yomi: 'A', lat: 34.63, lng: 135.03 } ]; let mapInfo; function initMap() { // 地図の作成 mapInfo = new google.maps.LatLng( { lat: locations[0]['lat'], lng: locations[0]['lng'] } ); // 緯度経度のデータ作成 map = new google.maps.Map(document.getElementById('map'), { // #mapに地図を埋め込む center: mapInfo, // 地図の中心を指定 zoom: 15 // 地図のズームを指定 }); let markers = locations.map(function(location, i) { return new google.maps.Marker({ position: location, // label: locations[i].name, icon: { url: 'img/***.png' } }); }); let markerCluster = new MarkerClusterer(map, markers, {imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m'}); } for (let i = 0; i < locations.length; i++) { mapContent = `<div class="map"><h1 style="margin: 0;padding: 0;">${locations[i]['name']}</h1> ${locations[i]['yomi']}<br> <ons-button modifier="quiet" id="datail">詳細をみる</ons-button></div>`; infoWindow[i] = new google.maps.InfoWindow({ // 吹き出しの追加 content: mapContent // 吹き出しに表示する内容 }); markerEvent(i); // マーカーにクリックイベントを追加 function markerEvent(i) { markers[i].addListener('click', function() { // マーカーをクリックしたとき infoWindow[i].open(map, markers[i]); // 吹き出しの表示 }); } }

ここをもっとこうしたほうがいい、ここのコードは間違っているなど、些細なことでも構いませんので教えていただけるとありがたいです。
よろしくお願いいたします。

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

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

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

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

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

Lhankor_Mhy

2019/05/10 00:46

marker[i].addListener('click', function() { // マーカーをクリックしたとき ↑はtypoでは? markers であるような気がします。
yoshi1125hisa

2019/05/10 00:58

Typoでした。修正しておきます…!
Lhankor_Mhy

2019/05/10 01:12

JavaScriptのエラーは出ていますか?
yoshi1125hisa

2019/05/10 01:15

``` Uncaught ReferenceError: google is not defined at map.js:148 ``` が出ています。
Lhankor_Mhy

2019/05/10 01:17

では、GoogleマップAPI が読み込めていないのが原因でしょう。
yoshi1125hisa

2019/05/10 01:22

本当ですか? GoogleMapは正常に読み込め、マーカーの表示、クラスタの表示はできています。 できないのは詳細を表示するウィンドウの表示とクリックイベントのみです。
Lhankor_Mhy

2019/05/10 01:25

initMap() が実行される時点では、GoogleマップAPI が読み込めているが、 for (let i = 0; i < locations.length; i++) { の部分が実行されている時点では読み込めていない、ということでしょう。 スクリプトの実行順を確認してみてください。
yoshi1125hisa

2019/05/10 01:25

なるほど…確認してみます。ありがとうございます!
yoshi1125hisa

2019/05/10 07:31

こちら、色々と試してみましたがまだ解決しておりません…。何か他に解決できるような方法があれば教えていただきたいです! よろしくお願いします。
Lhankor_Mhy

2019/05/10 07:46

先ほどご提示いただきましたエラーの方は解決されましたか?
yoshi1125hisa

2019/05/10 08:04

いえ、まだ解決できておりません…。 順番を変えても特に変化はありません。
Lhankor_Mhy

2019/05/10 08:31

順番を変えた、というのはコードの記述順のことでしょうか?
Lhankor_Mhy

2019/05/10 08:42

initMap() はAPIのロード時コールバック関数でしょうか? ご提示のスクリプトは、グローバルにある、と考えていいでしょうか? ↑以上のとおりだという前提ですが、for文が実行されるのは、initMap() より前になります。 initMap() の中に for文を書いてみてはいかがでしょう?
yoshi1125hisa

2019/05/10 11:20

> initMap() の中に for文を書いてみてはいかがでしょう? こちらで無事実行できました。ありがとうございました!
Lhankor_Mhy

2019/05/10 11:25

ご解決されて何よりです。
guest

回答1

0

自己解決

@Lhankor_Mhy

initMap() はAPIのロード時コールバック関数でしょうか? ご提示のスクリプトは、グローバルにある、と考えていいでしょうか? ↑以上のとおりだという前提ですが、for文が実行されるのは、initMap() より前になります。 initMap() の中に for文を書いてみてはいかがでしょう?

こちらで解決しました。ありがとうございました。

投稿2019/05/10 11:21

yoshi1125hisa

総合スコア12

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問