Japp, Geocoding ist das richtige Schlüsselwort, und dafür hat die API auch das passende Objekt parat: GClientGeocoder
Angepasst auf dein Script müsste das so aussehen:
<script type="text/javascript">
function initialize() {
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("map_canvas"));
map.setCenter(new GLatLng(51.165691,10.451526), 5);
map.addControl(new GLargeMapControl());
map.addControl(new GMapTypeControl());
[COLOR="Green"]var geocoder = new GClientGeocoder();[/COLOR]
// EIGENE MARKER
var baseIcon = new GIcon();
baseIcon.image = "GoogleMapsMarker.gif";
baseIcon.iconSize = new GSize(64, 64);
baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
baseIcon.shadowSize = new GSize(70, 64);
baseIcon.iconAnchor = new GPoint(30, 50);
baseIcon.infoWindowAnchor = new GPoint(30, 30);
// DATEN AUS XML LADEN
GDownloadUrl("data.xml", function(data) {
var xml = GXml.parse(data);
var markers = xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
[COLOR="Red"]var latlng = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
parseFloat(markers[i].getAttribute("lng")));
map.addOverlay(new GMarker(latlng, {icon:baseIcon}));[/COLOR]
[COLOR="Green"]
geocoder.getLatLng(
markers[i].getAttribute("adresse"),
function( latlng ) {
map.addOverlay( new GMarker( latlng, {icon:baseIcon} ) );
}
);[/COLOR]
}
});
function createListener (marker, text) {
GEvent.addListener(marker, "click", function() {
marker.openInfoWindowHtml(text);
map.setCenter(marker.getPoint(), 14);
});
}
}
}
</script>
Alles anzeigen
Rot, das was du nicht mehr brauchst, grün das, was dazu kommt.
Die XML müsste/könnte dann so aussehen:
<?xml version="1.0" encoding="utf-8" ?>
<markers>
<marker adresse="Berlin" />
<marker adresse="Hamburg" />
<marker adresse="Takatukaland" />
</markers>