entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

¿Cómo calcular distancia entre usuarios en WP mediante geolocalización?

Hola, estoy desarrollando una red social tipo Badoo, y me gustaría integrar un sistema de geolocalización, que por ejemplo un usuario busque personas en un radio de 10 km, y le salgan las 100 más cercanas por ejemplo.. Es tipo Badoo. Alguien sabe como hacerlo? Si hay algún plugin de Wordpress?

Saludos y gracias de antemano.

0voto

Leonardo-Tadei comentado

Y ya tenés almacenadas las ubicaciones de los usuarios y la idea es tomar esto en vivo de los usuarios conectados?

Si es tomarlo en vivo, ya tenés armado el almacenamiento de las ubicaciones de los usuarios conectados?

0voto

jabixo comentado

No, solo tengo la idea, pero no se como hacerlo... he visto como coger la localización mediante la geolocalización en html5, pero no se como guardarla y calcular la distancia entre usuarios..

0voto

Peter comentado

Lo que te dice Leonardo es necesario saberlo, porque queda la duda de si quieres saber la posición exacta de un usuario en tiempo real o quieres sacar los datos que un usuario pone en su cuenta.

Esto es importante, porque si yo me registro desde mi casa y pongo como ubicación Japón, es una cosa y si entro desde el teléfono móvil y autorizo mi ubicación real es otra.

Si es para móvil se puede hacer de una manera y si es para escritorio de otra, etc....

Entonces tendrías que explicar (además de la idea) el funcionamiento general de las cosas para poder darnos una idea de como serían las cosas y que es lo que se podría hacer.

Saludos.

0voto

jabixo comentado

Cierto, lo que quiero saber es donde está el usuario en tiempo real, tanto si está en un móvil como si está en un pc y se coge la ubicación mediante su ip.

1 Respuesta

3votos

carlossevi Puntos63580

Como la pregunta es muy extensa y da para mucha literatura, te voy a contestar por lo menos dándote pistas para la primera parte: cómo almacenar la información y plantear su futura consulta. En primer lugar, vamos a aclarar lo que se considera tiempo real en tus comentarios anteriores.

El ejemplo más simple: una ubicación por cada usuario que no cambia en el tiempo. La ubicación se registra sólo una vez y es invariante, podría incluso guardarse en la tabla de usuarios. La ubicación se guarda en la BBDD y se consulta cada vez que se quieran ver usuarios cercanos.

Si en lugar de guardarlo sólo una vez, la actualizas cada vez que el usuario se conecta independientemente del dispositivo (HTML5) y le das una caducidad a la conexión (por ejemplo con un campo que indique cuando expira) ya tienes un sistema que es pseudo tiempo real. Cuanto más frecuentemente lo actualices y más rápido caduque más parecido será al tiempo real.

Podrías tener una tabla que guarde:

  • ID del usuario
  • Posición
  • Caducidad de la posición

Con esos campos ya serías capaz de calcular qué usuarios se encuentran cerca de ti partiendo de tu posición y fecha y hora actual. Lógicamente, de cara a una optimización en esa tabla se deberían ir borrando elementos antiguos, pero esto ya queda fuera del alcance de la pregunta para no extenderme demasiado.

Ahora surgen dos preguntas:

  1. ¿Qué formato tiene el campo "Posición"?
  2. ¿Cómo filtro por distancia en la consulta a la BBDD?

La respuesta a ambas está relacionada y hay dos opciones:

  • Almacenar la posición en dos campos independientes: longitud y latitud. El almacenamiento es más simple pero la consulta a la base de datos se complica ya que hay que utilizar conocimientos geométricos y trigonometría.
  • Utilizar una extensión de MySQL que de solución al problema: Extensiones espaciales. Hay tipos de datos y funciones especiales para almacenar puntos en un espacio geométrico y calcular si distancia.

Te dejo un enlace muy completo que explica diferentes estrategias y soluciones matemáticas: http://www.michael-pratt.com/blog/7/Encontrar-Lugares-cercanos-con-MySQL-y-PHP/

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta