I am trying to have a map with multiple markers on it.
If I do it with coordinates, it works fine. The problem is I have not the coordinates of all the places. What I certainly have is the address.
So I opted for the geocoding. It works fine with only one marker, but I don't understand why, it doesn't loop through the array of locations.
Here is my code:
var locations = [
['B&B Al Centro Storico', 41.203517, 16.600466, 2,'Via Samuelli 83','Barletta'],
['B&B Cortile Fondo Noce', 41.276672, 16.417772, 3,'Via Fondo Noce 29','Bisceglie']
];
var map = new google.maps.Map(document.getElementById('mappa'), {
zoom: 9,
center: new google.maps.LatLng(41.239162, 16.500301),
mapTypeId: google.maps.MapTypeId.ROADMAP,
scrollwheel: false,
disableDefaultUI: true
});
var geocoder = new google.maps.Geocoder();
var infowindow = new google.maps.InfoWindow();
var marker, i;
var infoWindowContent = [];
function setPin(indirizzo,mappa)
{
geocoder.geocode({'address': indirizzo}, function(results, status) {
if (status === google.maps.GeocoderStatus.OK) {
marker = new google.maps.Marker({
map: mappa,
position: results[0].geometry.location
});
}
});
}
for (i = 0; i < locations.length; i++) {
// geocoder.geocode({'address': locations[i][4] + ', ' + locations[i][5]}, function(results, status) {
// if (status === google.maps.GeocoderStatus.OK) {
// marker = new google.maps.Marker({
// map: map,
// position: results[0].geometry.location
// });
// }
// });
setPin(locations[i][4] + ' ' + locations[i][5],map);
// marker = new google.maps.Marker({
// position: new google.maps.LatLng(locations[i][1], locations[i][2]),
// map: map
// });
infoWindowContent[i] = '<b>'+locations[i][0]+'</b>';
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
infowindow.setContent(infoWindowContent[i]);
infowindow.open(map, marker);
}
})(marker, i));
}
You can see the commented out lines of the lat,long version that works as expected.