仕事で調べてたんですが結局使わなくなり、せっかくなんで忘れないようにここに残しておきます。

住所録みたいな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件くらいを超えてくると変換のレスポンス悪い。プロットしてくれない。