はじめまして!
現在、一番下に記載したコードを用い、GoogleMapsにおいて以下のようなXMLファイルのデータを取り出してピンを表示させています。
また、PHPで受け取った緯度・経度の変数(lat,lng)から表示する場所を動的に変更させています。
xml
1<markers> 2<marker name="ストレッチ" address="岡山駅" lat="35.507458" lng="139.617584" type="stress"/> 3<marker name="ランニング" address="京都駅" lat="34.997730" lng="135.726395" type="train"/> 4</markers> 5
そこで今回、PHPから受け取った変数typeのみのピンだけを表示させれる(「変数type=XMLファイルのtype」のmarker)ようにコードを修正したいのですが、上手く出来ません。
このような場合どうすればよいでしょうか?
是非ご教授のほどよろしくお願い申し上げます。
javascript
1<?php 2 3 $lat=$_GET['lat']; 4 $lng=$_GET['lng']; 5 //$type=$_GET['type']; 6 7 $lat=htmlspecialchars($lat); 8 $lng=htmlspecialchars($lng); 9 //$type=htmlspecialchars($type); 10 11 12 ?> 13 14 <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js"></script> 15 <script type="text/javascript"> 16 //<![CDATA[ 17 18 var customIcons = { 19 weight: { 20 icon: 'http://略(.png)' 21 }, 22 train: { 23 icon: 'http://略(.png)' 24 }, 25 stress: { 26 icon: 'http://略(.png)' 27 }, 28 exercise: { 29 icon: 'http://略(.png)' 30 } 31 }; 32 33 var lat = <?php echo $lat; ?>; 34 var lng = <?php echo $lng; ?>; 35 //var type = <?php echo $type; ?>; 36 37 38 39function load() { 40var map = new google.maps.Map(document.getElementById("map"), { 41 center: new google.maps.LatLng(lat, lng), 42 zoom: 13, 43 mapTypeId: 'roadmap' 44 }); 45var infoWindow = new google.maps.InfoWindow; 46 47 48downloadUrl("http://略(XMLファイル)", function(data) { 49var xml = data.responseXML; 50var markers = xml.documentElement.getElementsByTagName("marker"); 51 for (var i = 0; i < markers.length; i++) { 52 var name = markers[i].getAttribute("name"); 53 var address = markers[i].getAttribute("address"); 54 var type = markers[i].getAttribute("type"); 55 var point = new google.maps.LatLng( 56 parseFloat(markers[i].getAttribute("lat")), 57 parseFloat(markers[i].getAttribute("lng"))); 58 var html = "<b>" + name + "</b> <br/>" + address; 59 var icon = customIcons[type] || {}; 60 var marker = new google.maps.Marker({ 61 map: map, 62 position: point, 63 icon: icon.icon 64 }); 65 bindInfoWindow(marker, map, infoWindow, html); 66 } 67 }); 68 } 69 70 function bindInfoWindow(marker, map, infoWindow, html) { 71 google.maps.event.addListener(marker, 'click', function() { 72 infoWindow.setContent(html); 73 infoWindow.open(map, marker); 74 }); 75 } 76 77 function downloadUrl(url, callback) { 78 var request = window.ActiveXObject ? 79 new ActiveXObject('Microsoft.XMLHTTP') : 80 new XMLHttpRequest; 81 82 request.onreadystatechange = function() { 83 if (request.readyState == 4) { 84 request.onreadystatechange = doNothing; 85 callback(request, request.status); 86 } 87 }; 88 89 request.open('GET', url, true); 90 request.send(null); 91 } 92 93 function doNothing() {} 94 95 //]]> 96 97 </script>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。