Search code examples
javaandroidgoogle-mapslatitude-longitudeandroid-gps

Android How to Convert Latitude Longitude into Degree format


I want to convert latitude 40.7127837, longitude -74.0059413 and to the following format

N 40°42'46.0218" W 74°0'21.3876"

What is the best way to do that?

I tried methods like location.FORMAT_DEGREES, location.FORMAT_MINUTES and location.FORMAT_SECONDS, but I'm not sure how to convert them to the right format. Thanks.

strLongitude = location.convert(location.getLongitude(), location.FORMAT_DEGREES);
strLatitude = location.convert(location.getLatitude(), location.FORMAT_DEGREES);

Solution

  • The Location.convert() method that you are using gives very good results and is well implemented and tested. You just need to format the output to suit your needs:

    private String convert(double latitude, double longitude) {
        StringBuilder builder = new StringBuilder();
    
        if (latitude < 0) {
            builder.append("S ");
        } else {
            builder.append("N ");
        }
    
        String latitudeDegrees = Location.convert(Math.abs(latitude), Location.FORMAT_SECONDS);
        String[] latitudeSplit = latitudeDegrees.split(":");
        builder.append(latitudeSplit[0]);
        builder.append("°");
        builder.append(latitudeSplit[1]);
        builder.append("'");
        builder.append(latitudeSplit[2]);
        builder.append("\"");
    
        builder.append(" ");
    
        if (longitude < 0) {
            builder.append("W ");
        } else {
            builder.append("E ");
        }
    
        String longitudeDegrees = Location.convert(Math.abs(longitude), Location.FORMAT_SECONDS);
        String[] longitudeSplit = longitudeDegrees.split(":");
        builder.append(longitudeSplit[0]);
        builder.append("°");
        builder.append(longitudeSplit[1]);
        builder.append("'");
        builder.append(longitudeSplit[2]);
        builder.append("\"");
    
        return builder.toString();
    }
    

    When you call this method with your input coordinates:

    String locationString = convert(40.7127837, -74.0059413);
    

    You will receive this output:

    N 40°42'46.02132" W 74°0'21.38868"