- 締切済み
Google Maps API V3のxml
xmlファイルから読み込んだものを複数カスタムアイコン(情報ウィンドウ付)で表示させたいです。 現在アイコンは読まれずウィンドウも一つの状態です。 xmlからの緯度経度の取得はできるのですが、その他の情報の取得がわかりません。 下記がプログラムソースです。 xmlファイル <?xml version="1.0"?> -<markers> <marker season="" genre="" link="http://www.manyou-kumamoto.jp/castle/" type="culture" lng="130.705841" lat="32.806141" address="熊本県熊本市本丸1-1 " name="熊本城"/> <marker season="" genre="" link="http://www.greenland.co.jp/index2.html" type="reisure" lng="130.464676" lat="32.987690" address="熊本県荒尾市下井手1616" name="三井グリーンランド"/> </markers> javaプログラムソース $(function(){ $.ajax({ url:"map.xml", cache:false, dataType:"xml", success:function(xml){ var data=xmlRequest(xml); initialize(data); } }); }); function xmlRequest(xml){ var data=[]; $(xml).find("markers > marker").each(function(){ var dat={}; dat.lat=this.getAttribute("lat"); dat.lng=this.getAttribute("lng");//この辺の他のノード取得 $(this).children().each(function(){ if(this.childNodes.length>0)dat[this.tagName]=this.childNodes[0].nodeValue; }); data.push(dat); }); return data; } function initialize(data){ var op={ center : new google.maps.LatLng(32.791892438123696,130.704345703125), zoom : 9, mapTypeId : google.maps.MapTypeId.ROADMAP }; var map=new google.maps.Map(document.getElementById("map_canvas"),op); var reisure=new google.maps.MarkerImage( "d_5.ico", new google.maps.Size(48.0,64.0) ); var culture=new google.maps.MarkerImage( "d_6.ico" ); if (data != null) { var i=data.length; } while(i-- >0){ var dat=data[i]; var obj={ position:new google.maps.LatLng(dat.lat,dat.lng), map:map, icon:dat.type //使用の仕方はあってますか? }; var marker=new google.maps.Marker(obj); var infowindow = new google.maps.InfoWindow({ content:'<a href="dat.link"/>kumamoto</a>' //使用の仕方はあってますか? }); google.maps.event.addListener(marker, 'click', function() { infowindow.open(map,marker); }); } } google.maps.event.addDomListener(window, "load", intialize); よろしくおねがいします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- fujillin
- ベストアンサー率61% (1594/2576)
>xmlからの緯度経度の取得はできるのですが、その他の情報の取得がわかりません 未検証ですが・・・ lat、lngともにmarker要素の属性になっていますし、その他の情報も同じなので同様の方法で取得できませんか? ○○.getAttribute("address"); とか ○○.getAttribute("name"); で取得できると思いますけれど? mapのAPIについては、こちら(↓)に出ていますので、ここで確認するのがよろしいかと思います。 (英語ですが、クラスとメソッド、プロパティの一覧のようなものなので、英語がさっぱりの私でもなんとか…) https://developers.google.com/maps/documentation/javascript/reference Markerの定義で icon:dat.type この時点で、dat.typeにはなにが入っているのだろうか・・・? (アイコンのアドレスをどこでdat.typeに定義していますか?) >現在アイコンは読まれずウィンドウも一つの状態です。 ウィンドウを沢山用意したいのであれば、インスタンスをそれだけ作成しておく必要があります。 一度に表示するものが一つでよければ、同じものを位置や内容を変えて表示することで足りるでしょう。 最近回答したものですが、似た部分がありますので・・・ http://okwave.jp/qa/q7894323.html
お礼
ありがとうございます!!! やってみます!!!!