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
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/16 10:22
2021/08/16 10:44
2021/08/16 11:57
2021/08/16 12:10
2021/08/16 12:28