Tengo un sitio web de clasificados. Los usuarios primero tienen que especificar su 'área de búsqueda' ...

Quiero agregar una función en la que los usuarios también puedan marcar una casilla de verificación para encontrar anuncios "cercanos" a su "área" seleccionada.

Pero no sé cómo 'mapear' o 'vincular' las áreas juntas de una manera inteligente. Necesito algunos consejos sobre cómo hacer esto ...

Por ejemplo, ¿cómo se realiza la 'búsqueda de millas por radio' en los sitios web donde puede buscar clasificados?

Gracias

Por cierto, estoy usando PHP para consultar MYSQL para obtener resultados. Y actualmente todas las áreas tienen sus respectivos nombres en el campo (Nevada = Nevada en el valor del campo de la tabla también) Por lo tanto, la consulta se realiza obteniendo el valor de una lista desplegable y buscando ese valor en la tabla mysql.

0
user188962 11 dic. 2009 a las 17:13

3 respuestas

La mejor respuesta

Tendrá que usar el script de búsqueda de radio para eso. También necesita una base de datos de condados / ciudades con información, como ciudad / país, Longitute, latiture, etc.

Hay bastantes scripts de búsqueda de radio por ahí, necesita google un poco para encontrar uno.

0
Sarfraz 11 dic. 2009 a las 14:16

Este es el que usamos. Sql Server nuevamente pero muy fácil de enmendar.

Muchos otros ejemplos en la web dieron resultados dudosos ...

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
0
CountZero 3 nov. 2010 a las 17:17

El siguiente enlace está escrito específicamente para Microsoft SQL Server, pero sospecho que no sería demasiado difícil convertirlo a MySQL.

Código postal Búsqueda de proximidad de latitud / longitud

0
George Mastros 11 dic. 2009 a las 14:18