Witam,
mam bazę miast i są ich tysiące - nazwa, szerokość geograf., długość geograf itd. i żeby znaleźć wszystkiego miasta którą są np. 100km od Barcelony trzeba liczyć sinusy,cosinusy itp. i żeby tego uniknąć chciałbym policzyć to tylko raz i w bazie przechowywać ile jest km od Barcelony do wszystkich (zapewne paruset) miejscowości w pobliżu i tak przy każdej miejscowości...
Tylko rodzi się tu pytanie, jak to rozwiązać? Bo przecież nie mogę tego utworzyć w formie BARCELONA 30km ABCDEF itd. bo zajmie mi to miliony rekordów.
Ma ktoś jakiś pomysł, jak to można przechować w bazie?
PS. może to też być na zasadzie pozycji GPS, czyli jakieś zakresy :)
public function getCities()
{
$lat = 50.1234;
$lng = 20.1234;
$distance = 100;
$result = DB::select("SELECT city, (6371 * acos(cos(radians($lat))"
. "* cos(radians(lat)) * cos(radians(lng)"
. " - radians($lng)) + sin(radians($lat)) * sin(radians(lat))))"
. "AS distance FROM locations HAVING distance < $distance"
);
return '<pre>' . print_r($result, true) . '</pre>';
}