Я написал функцию, которая может рассчитать расстояние между двумя адресами, используя API Карт Google.Вычислить расстояния и отсортировать их
Адреса получены из базы данных. Я хочу рассчитать расстояние, используя функцию, которую я написал, и отсортировать места в соответствии с расстоянием. Также как функция «Найти магазин рядом с вами» в интернет-магазинах.
Я собираюсь указать, что я хочу сделать с примером:
Итак, предположим, что у нас есть 10 адресов в базе данных. И у нас есть переменная $ currentlocation. И у меня есть функция calcdist(), поэтому я могу рассчитать расстояния между 10 адресами и $ currentlocation и отсортировать их. Вот как я это делаю:
$query = mysql_query("SELECT name, address FROM table");
while ($write = mysql_fetch_array($query)) {
$distance = array(calcdist($currentlocation, $write["address"]));
sort($distance);
for ($i=0; $i<1; $i++) {
echo "<tr><td><strong>".$distance[$i]." kms</strong></td><td>".$write['name']."</td></tr>";
}
}
Но это не очень хорошо работает. Он не сортирует числа.
Другая проблема: Как я могу сделать это эффективным способом? Представьте, что существует бесконечное количество адресов; как я могу отсортировать эти адреса и перечислить их?
Имеет ли база данных есть широта и долгота в нем? – Jason
Вы связаны с MySQL? [PostgreSQL] (http://www.postgresql.org/) + [PostGIS] (http://postgis.refractions.net/) обеспечит гораздо лучшую основу для эффективного запроса данных. – outis
Как работает функция calcdist()? Не могли бы вы сделать это на стороне базы данных? Это значительно облегчило бы запрос, сортировку, разбиение на страницы. –