У меня есть сайт для объявлений. Сначала пользователи должны указать свою "область поиска"...
Я хочу добавить функцию, в которой пользователи также могут установить флажок, чтобы найти "закрыть" объявления в их выбранном 'area'.
Но я не знаю, как "mapp" или "связывать" области вместе умным способом. Мне нужно несколько советов о том, как это сделать...
Например, как "радиус-поиск миль" выполняется на веб-сайтах, где вы можете искать объявления?
Спасибо
BTW Я использую PHP для запроса MYSQL для получения результатов. И в настоящее время все области имеют свои собственные имена в поле (Nevada = Nevada в значении поля таблицы). Таким образом, запрос выполняется путем получения значения выпадающего списка и поиска этого значения в таблице mysql.
Для этого вам придется использовать поиск радиуса script. Также вам нужна база данных из графств/городов с информацией в ней, например, город/страна, longitute, latiture и т.д.
Существует довольно несколько скриптов поиска радиуса, вам нужно немного найти Google.
Это тот, который мы используем. Sql Server снова, но очень легко изменить.
Множество других примеров в Интернете дали изворотливые результаты....
ALTER function [dbo].[udf_Haversine](@lat1 float, @long1 float, @lat2 float, @long2 float) returns float begin
declare @dlon float, @dlat float, @rlat1 float, @rlat2 float, @rlong1 float, @rlong2 float, @a float, @c float, @R float, @d float, @DtoR float
select @DtoR = 0.017453293
select @R = 3937 --3976
select
@rlat1 = @lat1 * @DtoR,
@rlong1 = @long1 * @DtoR,
@rlat2 = @lat2 * @DtoR,
@rlong2 = @long2 * @DtoR
select
@dlon = @rlong1 - @rlong2,
@dlat = @rlat1 - @rlat2
select @a = power(sin(@dlat/2), 2) + cos(@rlat1) * cos(@rlat2) * power(sin(@dlon/2), 2)
select @c = 2 * atn2(sqrt(@a), sqrt(1-@a))
select @d = @R * @c
return @d
end
Следующая ссылка написана специально для Microsoft SQL Server, но я подозреваю, что было бы не так сложно преобразовать ее в MySQL.