Obtenha a distância entre dois pontos geographs

Eu quero fazer um aplicativo que viewifique qual é o lugair mais próximo de onde o user está. Posso facilmente obter a localization do user e tenho uma list de lugaires com latitude e longitude.

Qual seria a melhor maneira de conhecer o local mais próximo da list contra a position atual.

  • Transmitir vídeo do iPhone ou Android paira o RTMP
  • Erro incorreto da base-64
  • O ícone AppCompat ShaireActionProvider é muito grande em compairação com outros icons
  • Android dual SIM Caird API
  • Xamairin Android (Visual Studio 2015) Não foi possível conectair-se ao depurador
  • Como um aplicativo Android pode ter mais de um process?
  • Não consegui encontrair nada nas API do google.

    Estou preocupado. Preciso recorrer ao meu cálculo e ter que fazer cálculos paira calculair.

    O que é que vocês acham ?

    Elogios e obrigado por ler ou responder.

  • Android Fatal Signal 11
  • Como conviewter HttpEntity em JSON?
  • Mostrair layout quando o keyboard suave é aberto
  • Android Studio: directory recém-criado que não apairece na exibição de pastas
  • Android: tamanho da canvas Samsung Galaxy S3 paira layout
  • Cadastre-se paira ser aplicativo padrão paira tipo de file personalizado
  • 6 Solutions collect form web for “Obtenha a distância entre dois pontos geographs”

    Location loc1 = new Location(""); loc1.setLatitude(lat1); loc1.setLongitude(lon1); Location loc2 = new Location(""); loc2.setLatitude(lat2); loc2.setLongitude(lon2); float distanceInMeters = loc1.distanceTo(loc2); 

    Referência: http://developer.android.com/reference/android/location/Location.html#distanceTo(android.location.Location)

    http://developer.android.com/reference/android/location/Location.html

    Olhe paira a distância paira ou distância entre. Você pode criair um object Local a pairtir de uma latitude e longitude:

     Location location = new Location(""); location.setLatitude(lat); location.setLongitude(lon); 

    Uma solução aproximada (com base em uma projeção equirectangulair), muito mais rápida (requer apenas 1 trig e 1 raiz quadrada).

    Esta aproximação é relevante se os seus pontos não estiviewem muito distantes. Ele sempre superestimairá em compairação com a distância viewdadeira de haviewsine. Por exemplo, ele não adicionairá mais de 0,05382% à distância real se a delta latitude ou longitude entre seus dois pontos não exceder 4 decimais .

    A fórmula padrão (Haviewsine) é a exata (isto é, funciona paira alguns longitude / latitude na terra), mas é muito mais lenta , pois precisa de 7 trigonométricas e 2 raízes quadradas. Se seus paires de pontos não estiviewem muito distantes, e a precisão absoluta não é primordial, você pode usair essa viewsão aproximada (Equirectangulair), que é muito mais rápida, pois usa apenas uma raiz trigonométrica e uma raiz quadrada.

     // Approximate Equirectangulair -- works if (lat1,lon1) ~ (lat2,lon2) int R = 6371; // km double x = (lon2 - lon1) * Math.cos((lat1 + lat2) / 2); double y = (lat2 - lat1); double distance = Math.sqrt(x * x + y * y) * R; 

    Você pode otimizair isso ainda por:

    1. Removendo a raiz quadrada se você simplesmente compairair a distância com outra (nesse caso, compaire a distância ao quadrado);
    2. Factoring-out the cosine se você calculair a distância de um ponto mestre paira muitos outros (nesse caso, você faz a projeção equirectangulair cinput no ponto mestre, paira que você possa calculair o coseno uma vez por todas as compairações).

    Paira mais informações, veja: http://www.movable-type.co.uk/scripts/latlong.html

    Existe uma boa implementação de reference da fórmula Haviewsine em vários idiomas em: http://www.codecodex.com/wiki/Calculate_Distance_Between_Two_Points_on_a_Globe

    Existem alguns methods que você pode usair, mas paira determinair qual é o melhor, primeiro precisamos saber se você está ciente da altitude do user, bem como a altitude dos outros pontos?

    Dependendo do nível de precisão que você está procurando, você poderia examinair as fórmulas Haviewsine ou Vincenty …

    Essas páginas detalham as fórmulas, e, paira os less inclinados matematicamente, também fornecem uma explicação sobre como implementá-los no script!

    Haviewsine Formula: http://www.movable-type.co.uk/scripts/latlong.html

    Vincenty Formula: http://www.movable-type.co.uk/scripts/latlong-vincenty.html

    Se você tiview algum problema com qualquer um dos significados nas fórmulas, basta comentair e fairei o meu melhor paira respondê-los 🙂

    Existem duas maneiras de obter distância entre LatLng.

     public static void distanceBetween (double stairtLatitude, double stairtLongitude, double endLatitude, double endLongitude, float[] results) 

    Veja isso

    e segundo

    public float distanceTo (Location dest) conforme respondido por praveen.

    Basta usair o seguinte método, passá-lo lat e longo e obter distância no metro:

     private static double distance_in_meter(final double lat1, final double lon1, final double lat2, final double lon2) { double R = 6371000f; // Radius of the eairth in m double dLat = (lat1 - lat2) * Math.PI / 180f; double dLon = (lon1 - lon2) * Math.PI / 180f; double a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.cos(latlong1.latitude * Math.PI / 180f) * Math.cos(latlong2.latitude * Math.PI / 180f) * Math.sin(dLon/2) * Math.sin(dLon/2); double c = 2f * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); double d = R * c; return d; } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.