2012-06-25 3 views
0

Я делаю небольшой раздел приложения (телефон и веб-сайт), в котором можно найти ближайшие магазины (хранящиеся в моей базе данных). Я использую PHP, поэтому собираюсь использовать идею веб-сервиса и отправлять запросы AJAX на страницу PHP. Я нашел следующую информацию от snipplr.com:Создание приложения локатора магазина с использованием расстояния между двумя координатами

function distance($lat1, $lng1, $lat2, $lng2, $miles = true) 
{ 
    $pi80 = M_PI/180; 
    $lat1 *= $pi80; 
    $lng1 *= $pi80; 
    $lat2 *= $pi80; 
    $lng2 *= $pi80; 

    $r = 6372.797; // mean radius of Earth in km 
    $dlat = $lat2 - $lat1; 
    $dlng = $lng2 - $lng1; 
    $a = sin($dlat/2) * sin($dlat/2) + cos($lat1) * cos($lat2) * sin($dlng/2) * sin($dlng/2); 
    $c = 2 * atan2(sqrt($a), sqrt(1 - $a)); 
    $km = $r * $c; 

    return ($miles ? ($km * 0.621371192) : $km); 
} 

который все хорошо, но у меня есть база данных около 300 мест. Мне просто нужно немного помочь начать с этого.

Моя идея состояла в том, чтобы выполнить запрос к БД и получить все длинные/латы в массиве и пропустить через массив, каждый раз используя эту вышеописанную функцию. Затем отсортируйте запросы по расстоянию и сделайте!

Но я просто задавался вопросом, лучший ли способ? Я относительно новичок в разработке PHP, поэтому вам нужно получить представление о лучших практиках и т. Д.

Спасибо за помощь!

+0

Почему вы не используете геопространственные индексы, предоставляемые во многих БД, таких как SQL и MongoDB? – Sammaye

ответ

1

Я бы посоветовал вам проверить решение google. это работает очень хорошо: https://developers.google.com/maps/articles/phpsqlsearch?hl=en

+0

, прежде чем я забуду: http://www.facebook.com/bluntch/app_118220448265736 вот рабочий образец. > типа i.e. Sidney в поле поиска ... –

+0

Имеются ли у этого ограничения использования? Потому что я собирался использовать API JS v3, но он говорит, что вы можете искать только 25 экземпляров и/или 25 пунктов назначения? – JamesG

+0

Ну, у нас еще не было проблем с этим. Я имею в виду, что это на Facebook, много кликов на нем, и мы кормим от 200 до 1000 магазинов из нашей базы данных ... так что я думаю, что пока это не ограничено ... на самом деле: я так не думаю - но я не уверен на 100%, честно говоря, –

Смежные вопросы