UPDATE 2010年3月23日
ジオコーディング使って住所のみのXMLからプロット
仕事で調べてたんですが結局使わなくなり、せっかくなんで忘れないようにここに残しておきます。
住所録みたいなXMLを読み込んでGoogleMapにプロットしたいけど、そのXMLには緯度・経度がないというケースです。
読み込むXMLはこんな感じ。
<?xml version="1.0" encoding="UTF-8" ?> <personal-infomations> <personal-infomation><name>太郎</name><address>住所1</address></personal-infomation> <personal-infomation><name>次郎</name><address>住所2</address></personal-infomation> <personal-infomation><name>三郎</name><address>住所3</address></personal-infomation> </personal-infomations>javascriptはこんな感じ。
//地図のインスタンスを保持するmap変数 var map; //ジオコーダのインスタンスを保持するgGeo変数 var gGeo; function addMarker(map) { GDownloadUrl("./personal_infomation.xml",function(data, responseCode) { var xmlDoc = GXml.parse(data); var markers = xmlDoc.documentElement.getElementsByTagName("personal-infomation"); for (var i = 0; i < markers.length; i++) { var addresses = markers[i].getElementsByTagName("address"); var names = markers[i].getElementsByTagName("name"); var address = GXml.value(addresses[0]); var name = GXml.value(names[0]); createMarker(address, name); } }); } // function createMarker(address, name) { gGeo.getLatLng(address, function(point) { var marker = new GMarker(point); var html = "<p>" + name + "</p>"; GEvent.addListener(marker, "mouseover", function() { marker.openInfoWindow(html); }); GEvent.addListener(marker, "mouseout", function() { marker.closeInfoWindow(); }); map.addOverlay(marker); }); } function load(){ map = new GMap2( document.getElementById("map")); map.setCenter( new GLatLng(36.1733569352216, 137.548828125), 5 ); map.addControl(new GLargeMapControl()); map.addControl(new GScaleControl()); //ジオコーダの作成 gGeo = new GClientGeocoder(); addMarker(map); // } // window.onload = load; // window.onunload = GUnload;
問題なのは、XMLの件数です。20件くらいを超えてくると変換のレスポンス悪い。プロットしてくれない。
CATEGORY javascript COMMENT (0)
コメントを投稿