• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Requesty do Google Maps API - zwracana jest tylko ostatnia pozycja przesłana z tablicy w pętli

Object Storage Arubacloud
0 głosów
125 wizyt
pytanie zadane 15 grudnia 2015 w JavaScript przez ScriptyChris Mędrzec (190,190 p.)
zamknięte 12 stycznia 2016 przez ScriptyChris

Pobrałem sobie Google Maps API pod JS. Napisałem skrypt, który pobiera dane na temat stacji benzynowych (nazwy i ulice) i przekazuje je do API, aby zostały zwrócone pozycje GPS.

Wszystko działa dla pojedynczych wywołań, tylko że jeśli przesyłam do wywoływanej funkcji geocodeAddress(address) w pętli kolejne elementy tablicy (w której siedzą nazwy i ulice stacji benzynowych), to ostatecznie zwracane mi jest kilka razy ostatni element tablicy, a nie wszystkie po kolei. Dziwne jest to, że przed samym wywołaniem funkcji wyświetlam sobie zmienną address i za każdym razem ma ona (prawidłowo) inną wartość (inne nazwy ulic). Natomiast, gdy wyświetlę tą zmienną już po wejściu do funkcji geocodeAddress(address), to zmienna zawsze ma wartość ostatniego elementu tablicy, ale wywołanie powtarza się tyle razy, ile jest elementów w tablicy.

Kod JavaScript:

function initMap(nazwaAdres) {
		var startPos = {lat: 51.235218, lng: 22.548834},
			startPlace = 'lublin';
			geocoder = new google.maps.Geocoder();
			map = new google.maps.Map(document.getElementById('map'), {
			center: startPos,
			zoom: 10
		  });

		  //Wywolanie funkcji z adresem
		  for (var index in nazwaAdres)
		  {
			  var address = nazwaAdres[index];
			  //console.log('adres PRZED ',address);
			  setTimeout(function(){geocodeAddress(address)},2500);
		  }
		}

		function geocodeAddress(address) {
             //console.log('adres PO ',address);
			geocoder.geocode( { 'address': address}, function(results, status) {
				if (status == google.maps.GeocoderStatus.OK) {
					var longtitude = results[0].geometry.location.lng();
					var latitude = results[0].geometry.location.lat();         			
										
					console.log(longtitude);
					console.log(latitude);	
						
					infowindow = new google.maps.InfoWindow();
			 
					var marker = new google.maps.Marker({
						position: {lat: latitude, lng: longtitude},
						map: map,
						title: address
					 });

				} else {
					console.log("Geocode was not successful for the following reason: " + status);
				}
			});
		}

 

komentarz zamknięcia: Problem rozwiązany

Podobne pytania

0 głosów
0 odpowiedzi 1,280 wizyt
pytanie zadane 2 lipca 2019 w JavaScript przez cyrus33 Użytkownik (680 p.)
0 głosów
1 odpowiedź 377 wizyt
pytanie zadane 17 grudnia 2017 w JavaScript przez chmod96 Obywatel (1,380 p.)
0 głosów
1 odpowiedź 1,041 wizyt
pytanie zadane 18 kwietnia 2017 w JavaScript przez Q_Nick Mądrala (5,010 p.)

92,555 zapytań

141,403 odpowiedzi

319,560 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...