Paulo Ferreira
Paulo Ferreira

Reputation: 421

Angle between 2 GPS Coordinates

I'm working in another iPhone App that uses AR, and I'm creating my own framework, but I'm having trouble trying to get the angle of a second coordinate relative to the current device position, anyone know a good resource that could help me with this?

Thanks in advance!

Upvotes: 8

Views: 11320

Answers (2)

u.jegan
u.jegan

Reputation: 833

Here is the android version of this code

import com.google.android.maps.GeoPoint;
    public double calculateAngle(GeoPoint startPoint, GeoPoint endPoint) {
        double lat1 = startPoint.getLatitudeE6() / 1E6;
        double lat2 = endPoint.getLatitudeE6() / 1E6;
        double long2 = startPoint.getLongitudeE6() / 1E6;
        double long1 = endPoint.getLongitudeE6() / 1E6;
        double dy = lat2 - lat1;
        double dx = Math.cos(Math.PI / 180 * lat1) * (long2 - long1);
        double angle = Math.atan2(dy, dx);
        return angle;
    }

Upvotes: 1

Marcelo Cantos
Marcelo Cantos

Reputation: 185862

If the two points are close enough together, and well away from the poles, you can use some simple trig:

float dy = lat2 - lat1;
float dx = cosf(M_PI/180*lat1)*(long2 - long1);
float angle = atan2f(dy, dx);

EDIT: I forgot to mention that latN and longN — and therefore dx and dy — can be in degrees or radians, so long as you don't mix units. angle, however, will always come back in radians. Of course, you can get it back to degrees if you multiply by 180/M_PI.

Upvotes: 17

Related Questions