Okay, ich spiele gerade mit Google Maps API v3 herum und bin auf ein Problem gestoßen. Ich weiß nicht, ob es an der API liegt oder einfach an einem JS-Fehler, den ich gemacht habe.
Problem: addMarkerFromAdress()
Funktion ruft geocodeFromAdress()
auf, das Koordinaten an addMarkerFromAdress()
zurückgibt. Aber der zurückgegebene Wert ist "undefined".
Zu Debug-Zwecken habe ich zwei Alert-Ausgaben hinzugefügt, eine in addMarkerFromAdress()
und eine in geocodeFromAdress()
. Was mich beunruhigt, ist, dass das alert()
in addMarkerFromAdress()
anscheinend ausgelöst wird, bevor ein Wert zurückgegeben wird. Warum?
Quelle:
var geocoder;
var map;
function initializeGoogleMaps() {
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(0, 0);
var myOptions = {
zoom: 1,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
}
function geocodeFromAdress(address) {
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var latLng = results[0].geometry.location;
alert(latLng); //Gibt Koordinaten aus, aber wird aus irgendeinem Grund 2. ausgegeben
return latLng;
} else {
alert("Geocode war aus folgendem Grund nicht erfolgreich: " + status);
}
});
}
function addMarkerFromAdress(address, title){
var latLng = geocodeFromAdress(address);
alert(latLng); //Gibt "undefined" aus, aber wird aus irgendeinem Grund zuerst ausgegeben
map.setCenter(latLng);
var marker = new google.maps.Marker({
map: map,
position: latLng
});
}
window.onload = function () {
initializeGoogleMaps();
addMarkerFromAdress('Berlin, Germany', 'Berlin');
}