Thiago
Thiago

Reputation: 13302

Android how to use location.distanceTo()

I am using a fragement, I need to get my currently Location (lat and lng) and I need to calculate my currently location with the destination location.

Can you pls give me a hand. what is the best way to calculate the location:

How can I get the distance from my currently location and the destination location using lat and lng ;

    LocationManager locationManager;
    Location locatio;



locationManager = (LocationManager)getActivity().getSystemService(Context.LOCATION_SERVICE);

location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);





String product_latitude     = "3.121191";
            String product_longtitude   = "101.673298";

            Double latitude     = Double.valueOf(product_latitude);
            Double longtitude   = Double.valueOf(product_longtitude);

            // Calculate the Distance
            String product_distance = location.distanceTo(latitude, longtitude);

Upvotes: 8

Views: 34636

Answers (4)

Mohsin Falak
Mohsin Falak

Reputation: 428

"distanceTo" gives an approximate result...

You can use DistanceMatrix API to get a close to accurate results.

DistanceMatrix API

Upvotes: 0

Chi Minh Trinh
Chi Minh Trinh

Reputation: 296

You can use static method of Location: distanceBetween to get distance between 2 locations.

float [] results = new float[5]; 
Location.distanceBetween(startLatitude, startLongitude, endLatitude,
endLongitude, results)

doc: here

Upvotes: 7

AniV
AniV

Reputation: 4037

Use Direction API to find to the distance from your current location to the destination. It returns a JSON object as distance which gives you the distance in mile, you can parse that JSON and display that on your app screen.

For Google's official documentation read here.

And for a tutorial read here.

Hope this would help!!!

Upvotes: 0

Jai Rajesh
Jai Rajesh

Reputation: 939

Try this

double latitude=lat;
double longitude=lng;    
float distance=0;
Location crntLocation=new Location("crntlocation");
crntLocation.setLatitude(currentLatitude);
crntLocation.setLongitude(currentLongitude);

Location newLocation=new Location("newlocation");
newLocation.setLatitude(latitude);
newLocation.setLongitude(longitude);


//float distance = crntLocation.distanceTo(newLocation);  in meters
distance =crntLocation.distanceTo(newLocation) / 1000; // in km

Upvotes: 20

Related Questions