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

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

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

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

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

Google マップ

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

Q&A

解決済

1回答

1130閲覧

Google Maps APIのinfoWindowがopenしない

michir

総合スコア12

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

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

Google マップ

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

0グッド

0クリップ

投稿2021/08/16 08:13

WordPressでGoogle Maps APIを利用したサイトを趣味で制作しております。
諸々初心者です。
マーカーをクリックするとinfoWindowがopenするようにしたく、試しに以下のように記述してみたのですが、クリックしても何も起きません。
アドバイスを頂けますと大変助かります。

php

1$term_id = get_queried_object_id(); 2$args = array( 3 'post_type' => 'hoge', 4 'posts_per_page' => -1, 5 'tax_query' => array( 6 array( 7 'taxonomy' => $taxonomy_name, 8 'terms' => $term_id, 9 ), 10 ), 11); 12$custom_query = new WP_Query( $args );//echo'<pre>';var_dump($custom_query);echo'</pre>'; 13if ( $custom_query->have_posts() ) : 14 echo '<script>'; 15 echo 'var data = new Array();'; 16while ( $custom_query->have_posts() ) : $custom_query->the_post(); 17 $location = get_post_meta(get_the_ID(), 'location'); 18 $title=get_the_title(); 19 if($location[0]['lat'] && $location[0]['lng']) { 20 echo 'data.push({'; 21 echo 'lat: "'.$location[0]['lat'].'",'; 22 echo 'lng: "'.$location[0]['lng'].'",'; 23 echo 'title: "'.$title.'",'; 24 echo 'url: "'.get_permalink(get_the_ID()).'"'; 25 echo '});'; 26 } 27endwhile; 28 echo '</script>'; 29wp_reset_postdata(); 30endif;

html

1<div id="gmaps" style="width: 100%; height: 100%;"></div> 2<script type="text/javascript" src="//maps.google.com/maps/api/js?key=hogehoge"></script> 3<script type="text/javascript"> 4<!-- 5var lat,lng; 6var map = new google.maps.Map( 7document.getElementById("gmaps"),{ 8zoom : 10, 9center : new google.maps.LatLng(lat, lng), 10mapTypeId : google.maps.MapTypeId.ROADMAP 11} 12); 13// マーカーを生成 14var marker = new Array(); 15for(var i=0; i<data.length; i++){ 16 var lat = data[i].lat; 17 var lng = data[i].lng; 18var name = data[i].title; 19 var url = data[i].url; 20 marker[i] = new google.maps.Marker({ 21 position: new google.maps.LatLng(lat, lng), 22 map: map 23 }); 24var latlng = new google.maps.LatLng(lat,lng); 25var infoWindow = new google.maps.InfoWindow(); 26 google.maps.event.addListener(marker[i], "click", function() { 27infoWindow.setContent(name); 28infoWindow.open(map,marker[i]); 29}); 30} 31// 範囲内に収める 32var minX = marker[0].getPosition().lng(); 33var minY = marker[0].getPosition().lat(); 34var maxX = marker[0].getPosition().lng();; 35var maxY = marker[0].getPosition().lat();; 36for(var i=0; i<data.length; i++){ 37 var lt = marker[i].getPosition().lat(); 38 var lg = marker[i].getPosition().lng(); 39 if (lg <= minX){ minX = lg; } if (lg > maxX){ maxX = lg; } 40 if (lt <= minY){ minY = lt; } if (lt > maxY){ maxY = lt; } 41} 42var sw = new google.maps.LatLng(maxY, minX); 43var ne = new google.maps.LatLng(minY, maxX); 44var bounds = new google.maps.LatLngBounds(sw, ne); 45map.fitBounds(bounds); 46//--> 47</script>

以上、何卒よろしくお願いいたしますm(_ _)m

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

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

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

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

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

guest

回答1

0

ベストアンサー

var i -> let i

投稿2021/08/16 08:31

kei344

総合スコア69400

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

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

michir

2021/08/16 10:22

ありがとうございます!お陰様でinfoWindowがopenしました! ただ、infoWindowに表示される内容が、配列dataの最後の値のtitleになってしまいます。 infoWindow.setContent(name) を、別の場所に記述することで解決できるのかなと考えておりますが、どこに記述すればよいか分かりません。 重ね重ね大変恐縮ですが、アドバイスいただけますと大変助かりますm(_ _)m
kei344

2021/08/16 10:44

$title=get_the_title(get_the_ID());
michir

2021/08/16 11:57

ご返信誠にありがとうございます! $title=get_the_title(); を $title=get_the_title(get_the_ID()); に変更してみましたが、$titleの中身に変化はありませんでした。 ご回答内容の趣旨を取り違えていたら恐縮なのですが、改めてご確認いただくことは可能でしょうか?m(_ _)m
michir

2021/08/16 12:10

追伸です。 私なりに考えて、以下のように変更してみましたが、うまくいきませんでした。 (name[i]が未定義となってしまいました) // マーカーを生成 var marker = new Array(); var name = new Array(); for(let i=0; i<data.length; i++){ var lat = data[i].lat; var lng = data[i].lng; name[i] = data[i].title; var url = data[i].url; marker[i] = new google.maps.Marker({ position: new google.maps.LatLng(lat, lng), map: map }); var latlng = new google.maps.LatLng(lat,lng); var infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener(marker[i], "click", function() { infoWindow.setContent(name[i]); infoWindow.open(map,marker[i]); }); }
kei344

2021/08/16 12:28

「name[i] = data[i].title;」って何。 infoWindow.setContent(data[i].title); でいいのでは。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問