Quiero hacer una aplicación que verifique el lugar más cercano donde se encuentra un usuario. Puedo obtener fácilmente la ubicación del usuario y ya tengo una lista de lugares con latitud y longitud.
¿Cuál sería la mejor manera de conocer el lugar más cercano de la lista con la ubicación actual del usuario?
No pude encontrar nada en las API de Google.
android
geolocation
maps
Chmouel Boudjnah
fuente
fuente
import android.location.Location;
o cuálhttp://developer.android.com/reference/android/location/Location.html
Mire en distanceTo o distanceBetween. Puede crear un objeto de ubicación a partir de una latitud y una longitud:
fuente
distanceTo
método.Una solución aproximada (basada en una proyección equirrectangular), mucho más rápida (solo requiere 1 trig y 1 raíz cuadrada).
Esta aproximación es relevante si sus puntos no están muy separados. Siempre se sobrestimará en comparación con la distancia real de Haversine. Por ejemplo, no agregará más de 0.05382% a la distancia real si la latitud o longitud delta entre sus dos puntos no excede los 4 grados decimales .
La fórmula estándar (Haversine) es la exacta (es decir, funciona para cualquier par de longitud / latitud en la tierra) pero es mucho más lenta ya que necesita 7 raíces trigonométricas y 2 cuadradas. Si sus dos puntos no están muy separados y la precisión absoluta no es primordial, puede usar esta versión aproximada (equirrectangular), que es mucho más rápida ya que usa solo una raíz trigonométrica y una raíz cuadrada.
Puede optimizar esto aún más mediante:
Para obtener más información, consulte: http://www.movable-type.co.uk/scripts/latlong.html
Hay una buena implementación de referencia de la fórmula de Haversine en varios idiomas en: http://www.codecodex.com/wiki/Calculate_Distance_Between_Two_Points_on_a_Globe
fuente
O(n)
. Para unaO(1)
solución, use un índice espacial 2D para recortar las coincidencias potenciales antes de calcular la solución exacta. Salimos del alcance de esta pregunta :)Hay un par de métodos que podría utilizar, pero para determinar cuál es el mejor, primero debemos saber si conoce la altitud del usuario, así como la altitud de los otros puntos.
Dependiendo del nivel de precisión que busque, puede buscar en las fórmulas de Haversine o Vincenty ...
Estas páginas detallan las fórmulas y, para los menos inclinados a las matemáticas, también proporcionan una explicación de cómo implementarlas en un script.
Fórmula de Haversine: http://www.movable-type.co.uk/scripts/latlong.html
Fórmula Vincenty: http://www.movable-type.co.uk/scripts/latlong-vincenty.html
Si tiene algún problema con alguno de los significados en las fórmulas, simplemente comente y haré todo lo posible para responderlos :)
fuente
Hay dos formas de calcular la distancia entre LatLng.
Mira esto
y segundo
public float distanceTo (Location dest)
como respondió praveen.fuente
fuente
Simplemente use el siguiente método, páselo lat y long y obtenga la distancia en metros:
fuente
puede obtener la distancia y el tiempo utilizando la API de mapas de Google API de mapas de Google
simplemente pase el JSON descargado a este método, obtendrá la distancia y el tiempo en tiempo real entre dos latlong's
fuente
fuente