 
			
				29.04.2018, 14:19
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 29.04.2018 
					
					
					
						Сообщений: 11
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				сделать цикл с картами google
			 
			
		
		
		
		Привет всем. 
Помогите решить задачу. 
Есть код который работает для одной карты. Пытался повторить его, но гугл запускает карты только с одной инициализацией. Мне надо вывести 2 или 3 а то и 4 карты на странице. пытался сделать 
for (var k = 0; k < 2; ki++) { но не работает. Если создать руками еще один код  внутри initMap() с другими названиями переменных, то работает. А как бы это сделать циклом? 
 
<script>
	var locations = [['Тула'],['Минск']];
	var locations2 = [['Новосибирск'],['Бургас']];
</script>	
	
	
<script>	
function initMap() {
	var map = new google.maps.Map(document.getElementById('map'), {
		zoom: 3,
		mapTypeId: google.maps.MapTypeId.ROADMAP,
		center: {lat: 0,lng: 0}
	});
	var markers = [];
	var bounds = new google.maps.LatLngBounds();
	geocoder = new google.maps.Geocoder();
	for (var i = 0; i < locations.length; i++) {
		var geocoder = new google.maps.Geocoder();
		geocoder.geocode({'address': locations[i][0]}, function(results, status) {
			var marker = new google.maps.Marker({
				map: map,
				position: results[0].geometry.location
			});
			markers.push(marker);
			bounds.extend(marker.getPosition());
			map.fitBounds(bounds);
		});
	}		
}
</script>
 
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				29.04.2018, 15:00
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 racheev, 
 для каждой карты нужен свой блок, строка 9 должна быть в цикле, и лучше class="map", а не id. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				29.04.2018, 16:10
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 29.04.2018 
					
					
					
						Сообщений: 11
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 а я как бы не понимаю что нужен свой блок.  
есть решение подскажите, чего воду в ступе толочь. а на счет id и класса разницы никакой. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				30.04.2018, 02:54
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.01.2012 
					
					
					
						Сообщений: 499
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
var map=[];
for (var k = 0; k < 2; k++) {
   map[k] = new google.maps.Map(document.getElementById('map'+k)
   ...
}
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				04.05.2018, 09:03
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 29.04.2018 
					
					
					
						Сообщений: 11
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		не выходит у меня каменный цветок. Помогите это сделать в цикл: 
<div id="map"></div> +++ <div id="map2"></div> 
<script>
	var locations = [['Тула'],['Минск']];
	var locations2 = [['Новосибирск'],['Бургас']];
	
function initMap() {
	var map = new google.maps.Map(document.getElementById('map'), {
		zoom: 3,
		mapTypeId: google.maps.MapTypeId.ROADMAP,
		center: {lat: 0,lng: 0},
		disableDefaultUI: true,
		scrollwheel: false
	});
	var markers = [];
	var bounds = new google.maps.LatLngBounds();
	geocoder = new google.maps.Geocoder();
	for (var i = 0; i < locations.length; i++) {
		var geocoder = new google.maps.Geocoder();
		geocoder.geocode({'address': locations[i][0]}, function(results, status) {
			var marker = new google.maps.Marker({
				map: map,
				position: results[0].geometry.location
			});
			markers.push(marker);
			bounds.extend(marker.getPosition());
			map.fitBounds(bounds);
			if (i > 0) {
				var sitepath = new google.maps.Polyline({
					path: [markers[0].getPosition(), marker.getPosition()],
					geodesic: true,
					strokeColor: '#FF0000',
					strokeOpacity: 1.0,
					strokeWeight: 2,
					map: map
				});
			}
		});
	}
		
		
		var map2 = new google.maps.Map(document.getElementById('map2'), {
			zoom: 3,
			mapTypeId: google.maps.MapTypeId.ROADMAP,
			center: {lat: 0,lng: 0},
			disableDefaultUI: true,
			scrollwheel: false
		});
		var markers2 = [];
		var bounds2 = new google.maps.LatLngBounds();
		geocoder2 = new google.maps.Geocoder();
		for (var i = 0; i < locations2.length; i++) {
			var geocoder2 = new google.maps.Geocoder();
			geocoder.geocode({'address': locations2[i][0]}, function(results, status) {
				var marker2 = new google.maps.Marker({
					map: map2,
					position: results[0].geometry.location
				});
				markers2.push(marker2);				
				bounds2.extend(marker2.getPosition());
				map2.fitBounds(bounds2);
				if (i > 0) {
					var sitepath = new google.maps.Polyline({
						path: [markers2[0].getPosition(), marker2.getPosition()],
						geodesic: true,
						strokeColor: '#FF0000',
						strokeOpacity: 1.0,
						strokeWeight: 2,
						map: map2
					});
				}
        	});
		}		
	}
</script>
 
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				04.05.2018, 09:39
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				google.maps несколько карт
			 
			
		
		
		
		racheev,
  
<!DOCTYPE html>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .map {
     width: 600px; height: 400px
  }
  </style>
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js"></script>
<script>
var locations = [['Тула','Минск'], ['Новосибирск','Бургас']];
function initMap() {
    [].forEach.call(document.querySelectorAll(".map"), function(div, k) {
        var map = new google.maps.Map(div, {
            zoom: 3,
            mapTypeId: google.maps.MapTypeId.ROADMAP,
            center: {
                lat: 0,
                lng: 0
            }
        });
        var markers = [];
        var bounds = new google.maps.LatLngBounds;
        geocoder = new google.maps.Geocoder;
        var location = locations[k];
        for (var i = 0; i < location.length; i++) {
            var geocoder = new google.maps.Geocoder;
            geocoder.geocode({
                "address": location[i]
            }, function(results, status) {
                var marker = new google.maps.Marker({
                    map: map,
                    position: results[0].geometry.location
                });
                markers.push(marker);
                bounds.extend(marker.getPosition());
                map.fitBounds(bounds)
            })
        }
    })
};
google.maps.event.addDomListener(window, 'load', initMap);
</script>
</head>
<body>
<div  class="map"></div>
<div  class="map"></div>
</body>
</html>
 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось рони, 04.05.2018 в 09:41.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				04.05.2018, 15:08
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 29.04.2018 
					
					
					
						Сообщений: 11
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Спасибо работает. И стрелочки ездят. Осталось только разобраться как массив из php передать в javascript что бы открывалось все как надо. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				15.05.2018, 13:31
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 29.04.2018 
					
					
					
						Сообщений: 11
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Еще не поможете мне прицепиться к чему-нибудь что бы убрать одну стрелочку.  я не могу понять почему i все время равно 2. 
function initMap() {
	function animateCircle(line) {
		var count = 0;
		window.setInterval(function() {
			count = (count + 1) % 200;
			var icons = line.get('icons');
			icons[0].offset = (count / 2) + '%';
			line.set('icons', icons);
		}, 20);
	}
    [].forEach.call(document.querySelectorAll(".map"), function(div, k) {
        var map = new google.maps.Map(div, {
            zoom: 10,
            mapTypeId: google.maps.MapTypeId.ROADMAP,
            center: {
                lat: 0,
                lng: 0
            },
            disableDefaultUI: true,
			scrollwheel: false
        });
        var markers = [];
        var bounds = new google.maps.LatLngBounds;
        geocoder = new google.maps.Geocoder;
        var location = locations[k];
        for (var i = 0; i < location.length; i++) {
            var geocoder = new google.maps.Geocoder;
            geocoder.geocode({
                "address": location[i]
            }, function(results, status) {
                var marker = new google.maps.Marker({
                    map: map,
                    position: results[0].geometry.location
                });
                markers.push(marker);
                bounds.extend(marker.getPosition());
                map.fitBounds(bounds);
                alert(i);
                /// как сделать что бы нечетный или четный запускал
                ///  i почему-то все время 2. я не понимаю почему
               	if (i % 2 == 0) {
					var sitepath = new google.maps.Polyline({
						path: [markers[0].getPosition(), marker.getPosition()],
						geodesic: true,
						icons: [{
							icon: {path: google.maps.SymbolPath.FORWARD_OPEN_ARROW},
							offset: '100%',
							
							}],
						strokeColor: '#FF0000',
						strokeOpacity: 1.0,
						strokeWeight: 2,
						map: map
					});
				}
				animateCircle(sitepath);
            })
        }
    })
};
 
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				15.05.2018, 15:53
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.11.2015 
					
					
					
						Сообщений: 2,899
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 racheev, 
 Функция строка 30 срабатывает при получении ответа от сервера, после завершения цикла (цикл прокручивается быстро, не дожидаясь ответа). 
Попробуйте вместо i использовать  markers.length 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				18.05.2018, 13:55
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 29.04.2018 
					
					
					
						Сообщений: 11
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от Dilettante_Pro
			 
		
	 | 
 
	| 
		Попробуйте вместо i использовать  markers.length
	 | 
 
	
 
 Спасибо, все сработало!  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 
 
 
 
	 | 
 
 
 |