Search code examples
androidgoogle-mapsarraylistgoogle-directions-api

How to sort ArrayList of LatLng


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.


Solution

  • 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.