Я собираюсь создать функцию в своем последнем проекте, предпочтительно используя PHP. Когда каждый пользователь подписывается, они собираются ввести свой почтовый индекс. Тогда, надеюсь, я буду преобразовывать это в lat/long, используя Open Street Map.Лучший способ для определения местоположения в радиусе начальной точки
В любом случае, я хочу, чтобы узнать других пользователей, находящихся рядом с текущим пользователем. Я видел много людей, использующих формулу Хаверсина, однако это означало бы, что пользователь запросил данные каждого другого пользователя, чтобы определить расстояние. Я мог бы кэшировать это, но вскоре он устареет по мере того, как регистрируются новые пользователи.
Какой эффект может иметь следующий запрос в моей системе?
sql = "SELECT zipcode, (3959 * acos(cos(radians({$coords['latitude']}))
* cos(radians(latitude)) * cos(radians(longitude)
- radians({$coords['longitude']}))
+ sin(radians({$coords['latitude']})) * sin(radians(latitude))))
AS distance FROM zipcodes HAVING distance <= {$radius} ORDER BY distance";
Это потянуло из чьего-то блога.
У меня нет цифр для скорости регистрации или количества пользователей, поскольку она все еще находится в разработке.
Я был бы признателен за любые отзывы или другие методы, которые я мог бы использовать, чтобы найти подходящих пользователей в пределах определенного радиуса.
Это действительно вопрос, связанный с PHP? звучит как больше вопросов SQL. –
Предпочтительными языками являются PHP/MySQL. Я не знал, есть ли какие-либо способы достижения этого, используя PHP, который, возможно, был пропущен иначе (очевидно, помимо выполнения вычислений в PHP). – 2009-07-28 14:18:56