Detectar si está a un kilómetro del punto de interés
Tengo una pregunta interesante. Tengo un valor de latitud de 51.445376 y un valor de longitud de -0.190624 (como un ejemplo, decir que esto fue recibido por un oyente de la localización de los androides). Esta ubicación en particular (y sus valores) es un punto de interés y se almacena en mi base de datos. Estoy utilizando un oyente de localización en mi Android, y enviaré a los usuarios la ubicación actual al servidor para detectar si el usuario ha llegado a un radio de un kilómetro de ese punto particular de interés. ¿Alguien sabe qué algoritmo utilizar para comprobar si los usuarios actual longitud y latitud está dentro de ese radio de un kilómetro del punto de interés de longitud y latitud? O algo que pueda ver?
Tal vez alguien me podría ayudar, ya que mis matemáticas no es la más grande del mundo.
- Comprender claramente el cálculo de la matriz
- Fórmulas matemáticas en textview en android
- Configuración de la alarma en base mensual android
- Convertir valores de ReplayGain a ajustes de volumen
- ¿Cómo obtengo el ángulo del teléfono en relación con el campo magnético de la Tierra?
- ¿Cómo calcular la posición en un círculo con un cierto ángulo?
- Mover la mano Minuto en el reloj de Android
- ¿Cómo determino qué triángulo tocó el usuario en este rectángulo?
- Android - calcular el ángulo del arco
- Implementar página curl en android?
- Escala alrededor de un punto específico en el sistema de coordenadas 2d
- 1000 * 60 * 60 * 24 * 30 resultados en un número negativo
- Cómo convertir de fracción de la cadena formateada en Decimal o Float en Java?
Para coordenadas geográficas, utilice esta función (dominio público):
public static double distanceInKM( double latStart,double lonStart, double latEnd,double lonEnd ){ latStart=Math.toRadians(latStart); latEnd=Math.toRadians(latEnd); return 6370.997*Math.acos( Math.cos(Math.toRadians(lonEnd - lonStart))*Math.cos(latStart)* Math.cos(latEnd)+Math.sin(latStart)*Math.sin(latEnd)); }
Existen al menos dos maneras populares de calcular la distancia geográfica: el método de Haversine y el método de Vincenty. Aunque Vincenty es extremadamente preciso, también es un poco complicado para sus necesidades. El método anterior muestra una función de distancia basada en la ley esférica de los cosenos.
Este mensaje de 2008 podría ser útil .
Enlaza a una descripción de MovableType de cómo utilizar la fórmula de Haversine para calcular la distancia entre dos puntos en una esfera. Es importante tener en cuenta que no es 100% exacta ya que la Tierra no es una esfera perfecta (su radio ecuatorial es de unos 20 km diferente de su radio polar), pero debe ser suficiente para sus necesidades.
El enlace MovableType también describe cómo usar una proyección equi-rectangular (traducción de coordenadas lat / long a rectangulares) y el teorema pitagórico para determinar una aproximación más áspera (pero más rápida) de la distancia (buena para pequeñas distancias de ~ 1-2km. )
Una solución simple: Simplemente encuentre la distancia, encontrando primero dx y dy.
Digamos que tengo el punto 1 (p1) y el punto 2 (p2)
Dx = p2.x – p1.x; Dy = p2.y – p1.y;
Ahora encuentre la distancia d como sigue
D = sqrt (dx ^ 2 + dy ^ 2)
En un lenguaje de programación como java, puede utilizar las siguientes líneas:
double d = Math.sqrt(dx*dx + dy*dy);
Espero que esto ayude como su punto de partida!
Nota: x & y debe ser calculado en consecuencia para su lat & lon info. Iba a escribir un fragmento de código corto, pero vi a alguien más tiene una buena solución (me upvoted su respuesta).
- Android Market SEO – Cómo llegar a aparecer más a menudo en el Android Market
- Android: crear un directorio personalizado para almacenar archivos