-1

I have an ArrayList of LatLngs. Is it possible to sequence them in order of distance from a reference LatLng? I'm practicing a delivery application which maps markers on the google map where i need to connect them using polylines (Like travelling sales person) Comparing two LatLng objects in google map v2 android (I'v gone through this link.)

Please help. Thanks in advance.

Community
  • 1
  • 1
  • 2
    Can you define ascending order? – EWit Aug 05 '14 at 09:09
  • the route should start from current location to next nearest location(marker),and then from that point to the next nearest location(marker)..and so on..and finally the route should be mapped to the current location of the user !!(like travelling sales person problem) – user3627077 Aug 05 '14 at 09:51

1 Answers1

1

Use this to get the distance between two points :

public static float distFrom(float lat1, float lng1, float lat2, float lng2) {
    double earthRadius = 3958.75;
    double dLat = Math.toRadians(lat2-lat1);
    double dLng = Math.toRadians(lng2-lng1);
    double a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) * Math.sin(dLng/2) * Math.sin(dLng/2);
    double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
    double dist = earthRadius * c;

    int meterConversion = 1609;

    return (float) (dist * meterConversion);
}

And put the results in a tree map.

Decoy
  • 1,598
  • 12
  • 19