Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Pobliskie miasta
Robert007
post
Post #1





Grupa: Zarejestrowani
Postów: 167
Pomógł: 2
Dołączył: 1.07.2009
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Witam, mam w bazie miasta z podanymi lat i lng i chciałbym na podstawie danej pozycji lat lng sprawdzić najbliższe miasta i obliczyć ile w danej odległości jest kilometrów.

Co chcę uzyskać? Mam tak:
1. Podaje do zapytania SQL moje pozycje (np. lat: 53.1351082 lng: 17.90514870000004)
2. W bazie wszystkie miasta mają swoją pozycję lat i lng i chcę by mi wyświetliło X miast tylko najbliższych do podanej pozycji.
3. Policzenie odległości km ile do danego miasta jest od podanej pozycji w linii prostej.

Zapewne trzeba użyć jakiś specyficznych funkcji MySQL ale niestety nie wiem jak się za to zabrać i jakie funkcję mi pomogą.
Liczę na waszą pomoc.

Ten post edytował Robert007 18.02.2016, 10:56:41
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 807
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Trzeba przenieść obliczenie do WHERE, wtedy bez ORDER tak:
  1. SELECT location
  2. FROM `TABELA` WHERE coordinates_lat <> '' AND coordinates_lng <> '' AND (6371 * acos(cos(radians(52.3957877)) * cos(radians(coordinates_lat)) * cos(radians(16.7491037) - radians(coordinates_lng)) + sin( radians(52.3957877)) * sin(radians(coordinates_lat)))) < 50


lub z ORDER:
  1. SELECT location, (6371 * acos(cos(radians(52.3957877)) * cos(radians(coordinates_lat)) * cos(radians(16.7491037) - radians(coordinates_lng)) + sin( radians(52.3957877)) * sin(radians(coordinates_lat)))) AS distanta
  2. FROM `TABELA` WHERE coordinates_lat <> '' AND coordinates_lng <> '' AND (6371 * acos(cos(radians(52.3957877)) * cos(radians(coordinates_lat)) * cos(radians(16.7491037) - radians(coordinates_lng)) + sin( radians(52.3957877)) * sin(radians(coordinates_lat)))) < 50 ORDER BY distanta ASC



Cytat
var R = 6371; // Radius of the earth in km
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 18.10.2025 - 04:34