J'ai essayé de géocoder une adresse en coordonnées LatLng, mais j'ai beaucoup de difficulté à le faire. Je sais que geocode()
est une fonction asynchrone, et j'ai été jouer avec des rappels en vain. J'ai regardé d'autres posts comme celui-ci (How to return value from an asynchronous callback function?), mais j'ai du mal à comprendre le concept. Si quelqu'un peut me montrer comment faire correctement cette fonction de rappel, sera très apprécié. Beaucoup de maux de tête sur celui-ci. A été en mesure d'obtenir le rappel de faire un alert()
qui donne le LatLng correct, mais ne pas définir le paramètre de position. Désolé ne pouvait pas comprendre à partir de l'exemple cité plus tôt. Assez nouveau à la langue. Toutes les références que vous pouvez me montrer pour comprendre le concept sont également très appréciées. Merci!Utilisation de google.maps.Geocoder(). Rappel asynchrone
var location;
var image;
var map;
var geocoder;
var address;
function initialize() {
var mapOptions = {
center: new google.maps.LatLng(42.763146, -73.3776),
zoom: 6,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas"),
mapOptions);
var cloudLayer = new google.maps.weather.CloudLayer();
cloudLayer.setMap(map);
addressSet(function(address) {
console.log(address);
// tried to set location = address;, location = new google.maps.LatLng(address);
// neither works
});
addMtsToMap(location,
map,
new google.maps.MarkerImage("img/mts/skier.png", null, null, null, new google.maps.Size(50,50)));
}
function addMtsToMap(location, map, image) {
var marker = new google.maps.Marker({
position: location,
map: map,
icon: image
});
var infoWindow = new google.maps.InfoWindow({content: "<h1>Powder!!!</h1>"});
google.maps.event.addListener(marker, "click", function() {
infoWindow.open(map, marker);
});
}
function addressSet(callback) {
geocoder = new google.maps.Geocoder();
geocoder.geocode({address: "Killington+VT"}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
address = results[0].geometry.location;
callback(address);
}
});
}