Как вывести гугл карты в цикле?

Здравствуйте.

Есть такой код:

<div class="contacts col-xs-12">
	<div class="contact-block row">
		<div class="maps col-lg-9" data-addr="<?= $address['address'] ?>"></div>
	</div>
	<div class="contact-block row">
		<div class="maps col-lg-9" data-addr="<?= $address['address'] ?>"></div>
	</div>
</div>


<script src="https://maps.googleapis.com/maps/api/js?key=API_KEY&callback=initMap" async defer></script>

<script type="text/javascript">
	var map;
	function initMap() {
		var element = $('.contact-block');
		element.each(function () {
			var self = $(this);
			var container = self.find('.maps');
			var addr = container.data('addr');
			var geocoder = new google.maps.Geocoder();
			geocoder.geocode({'address': addr}, function(results, status) {
				if (status === google.maps.GeocoderStatus.OK) {
					console.info(results);
					var map = new google.maps.Map(container, {
						zoom: 17,
						center: results[0].geometry.location
					});

					var marker = new google.maps.Marker({
						map: map,
						position: results[0].geometry.location
					});
				} else {
					alert('Geocode was not successful for the following reason: ' + status);
				}
			});
		});
	}
</script>


Понимаю, что код совсем не из лучших, но несколько суток не спал, нет уже сил переписать по другому. Мне надо, что бы хоть работало.

В общем, когда запускаю код, то мне пишет в консоли, что
Uncaught TypeError: Cannot set property 'position' of undefined


Помогите, пожалуйста, поправить, что бы в оба блока выводилась карта.

P.S. В $address['address'] содержится адрес строкой, типо "Минск, ул. Ленина, дом 666", поэтому и использую ещё геокодер, который должен это переводить. console.info(results); Возвращает норм объект.
  • Вопрос задан
  • 338 просмотров
Решения вопроса 1
@Arik
попробуйте
var map = new google.maps.Map(container[0], {
зачем первый var map;?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы