Error With Google Maps Api3
Solution 1:
The geocoder call is asynchronous, meaning that it takes some time to return and does not follow the sequential order as written. It also means that in the first bit, the function finishes before it gets to your return (results[0].geometry.location)
statement. So alert
has nothing to display.
Other than inserting statements inside the geocode
request, you can write a callback pattern to separate the script logic. The callback, which passes the location as the parameter, executes when the geocode
call is successful.
var infowindow = null;
var geocoder = new google.maps.Geocoder();
$(document).ready(function () { initialize(); });
functioncodeAddress(address, callback) {
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
callback(results[0].geometry.location);
}
});
}
functioninitialize() {
codeAddress("Chicago, IL", function(default_location) {
var map = new google.maps.Map(document.getElementById("map_canvas"),
{ center: default_location,
zoom: 3, mapTypeId: google.maps.MapTypeId.ROADMAP });
locations = ["Los Angeles", "Davis", "Truth or Consequences",
"Ann Arbor", "Massachusetts"];
for (var i = 0; i < locations.length; i++) {
codeAddress(locations[i], function(latLng) {
new google.maps.Marker({map:map, position:latLng});
});
}
});
}
Solution 2:
geocode does not return the result instantly. This is why you get nothing in the first version of your code. So if you want to do something with the geocode result you should do it in the callback function like in the second version of your code.
Solution 3:
Your
return (results[0].geography.location);
Only return the value of the nested function, not that of codeAddress function. Maybe if hou tell us what you're trying to do we can help.
Post a Comment for "Error With Google Maps Api3"