Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: google map api / pobieranie punktów w określonym promieniu
Forum PHP.pl > Forum > PHP
qbas-s
posiadam prawie 3000 punktów do wyświetlenia na mapie.
Jeną z opcji jaką sobie życzy klient jest możliwość przefiltrowania markerów według promienia od wyznaczonej lokalizacji czyli np podaję, że jestem w Warszawie, wybieram promień 3km.

wszystko działa mi ładnie prócz aspektu wydajnościowego bo dla każdego punktu aktualnie wykonuję zapytanie do api:
  1. $query = 'https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial' .
  2. '&origins=' . $origin['lat'] . ',' . $origin['lon'] .
  3. '&destinations=' . str_replace(',','.',$destination['lat']) . ',' . str_replace(',','.',$destination['lon']) .
  4. '&language=pl-PL&key=key';


po czym w instrukcji warunkowej sprawdzam sobie dystans pomiędzy punktami

  1. $output = file_get_contents($query);
  2. $output = json_decode($output);
  3.  
  4. $distance = $output->rows[0]->elements[0]->distance->value;
  5.  
  6. if ($distance < $choose_distance) {
  7. return true;
  8. }
  9. return false;


Dla prawie 3000 punktów powyższy kod wykonuje się adekwatną ilość razy.

Taki skrypt wykonuje się za długo przy takiej ilości danych, jak również wersja darmowa google api ma ograniczenie co do ilości zapytań w ciągu 24h. Jak mogę zoptymalizować ten skrypt? Czy mógłbym wysłać te wszystkie punkty w jednym zapytaniu tak abym z google dostał zwrotkę tylko z przefiltrowanymi danymi?
trueblue
Mają lokalizację środka, możesz odfiltrować te punkty w PHP.
qbas-s
ja widzisz zapewne, odfiltrowuje je w php problem w tym, że przy 3tys punktów wykonuje 3tys zapytań do googla co nie jest najwydajniejsze, dlatego zastanawiam się czy nie mógłbym wysłać jednego zapytania ze wszystkimi puntami zamiast 3 tys.
trueblue
Odfiltrować=obliczyć dystans w PHP.
trueblue
Nie, nie obliczasz dystansu w PHP, pobierasz go, zresztą jak napisałeś, poprzez 3000 żądań do GoogleMaps API.
Jeśli masz współrzędne środka obszaru i współrzędne punktów, to dystans możesz obliczyć w PHP.
qbas-s
dobra załapałem biggrin.gif faktycznie nie pomyślałem o tym sposobie. Obliczanie bez użycia google api. thx
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.