Answer the question
In order to leave comments, you need to log in
google maps api. How to place several infoblocks on the map?
Good to everyone! There is this code:
var cityMap = new google.maps.Map(document.getElementById('cityMap'), {
zoom: 12,
});
var infowindow = new google.maps.InfoWindow();
var services = document.getElementsByClassName('s__item');
var marker;
var geocoderCity = new google.maps.Geocoder();
for ( i=0; i < services.length; i++ ) {
var address = $(services[i]).find('.s__item__address_at').text();
var contentString = address;
geocoderCity.geocode({'address': address}, function (results, status) {
if (status === google.maps.GeocoderStatus.OK) {
center = results[0].geometry.location;
cityMap.setCenter(results[0].geometry.location);
marker = new google.maps.Marker({
map: cityMap,
position: center,
});
google.maps.event.addListener(marker, 'click', (function(marker) {
return function() {
infowindow.setContent(contentString);
infowindow.open(cityMap, marker);
}
})(marker));
}
});
}
Answer the question
In order to leave comments, you need to log in
Well, that's right, because you have one contentString variable for the whole cycle. And when you create a marker, the last value remains in it. Wrap the creation of the marker in a separate function, then the parameter passed to it will be different for each call. https://jsfiddle.net/sxbkjxwe/
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question