2010-04-29 14 views
5

He creado una aplicación en CakePHP que enumera las empresas. Hay aproximadamente 2000 entradas, y las coordenadas de latitud y longitud para cada negocio están en la base de datos.
Ahora estoy tratando de abordar la función de búsqueda.Busque las ubicaciones más cercanas a una dirección dada

Habrá un cuadro de entrada donde el usuario puede poner una dirección, ciudad o código postal, y luego me gustaría que devuelva las 11 empresas más cercanas encontradas desde la base de datos.

¿Cómo voy a ir haciendo esto?

+1

* (relacionado) * http://stackoverflow.com/questions/838344/algorithm-for-finding-nearby-points – Gordon

+0

(relacionado) http://www.artfulsoftware.com/infotree/queries.php?&bw = 1680 # 109 –

Respuesta

2

Uso el Yahoo Geo Planet API para identificar el lugar correspondiente al término de búsqueda que el usuario ingresó. Esto normalmente coincide con varios lugares, por lo que debe presentarlos nuevamente al usuario para que seleccione el correcto. Luego, una vez que conozca el lugar correcto y sus largos, que ofrece la API de Yahoo, puede usar el haversine formula para obtener las empresas más cercanas a la ubicación de los usuarios. Hay un buen ejemplo en la respuesta al this question.

+0

Esto es realmente útil y más cercano a lo que estoy buscando, ¡gracias! – xtine

0

Me acercaría a esto creando un cuadrado alrededor del punto, para obtener el punto es todo en sí mismo, ya que necesitará una base de datos de código postal, o api, que tienden a costar dinero. Ya sea en la compra de la base de datos o por búsqueda.

Al hacerlo por ciudad o similar al menos, probablemente podría, no estoy seguro, devolver el latitud larga de GMaps para esa ciudad.

Entonces trataría de obtener 4 coords longlat de esquina alrededor de ese punto. Entonces podría buscar en la base de datos los valores que están entre esos.

De cualquier manera es una pregunta difícil, ¡aunque una pregunta fabulosa! Interesado en ver las sugerencias de las personas.

+0

los datos del censo de los EE. UU. Se pueden usar para generar bases de datos ponderadas de latitud larga frente a código postal. He usado esa información en el pasado. Si buscas en Google, encontrarás una base de datos de código long-lat vs. zip disponible de forma gratuita. Y luego, encontrar todos los códigos postales que están dentro de un cuadrado cercano al que está en cuestión es una muy buena y rápida búsqueda de proximidad. –

Cuestiones relacionadas