Угол между 2 GPS-координатами - PullRequest
5 голосов
/ 28 сентября 2010

Я работаю в другом приложении для iPhone, которое использует AR, и я создаю свой собственный каркас, но у меня возникают проблемы при попытке получить угол второй координаты относительно текущей позиции устройства, кто-нибудь знает хорошийресурс, который мог бы помочь мне с этим?

Заранее спасибо!

Ответы [ 2 ]

14 голосов
/ 28 сентября 2010

Если две точки находятся достаточно близко друг к другу и далеко от полюсов, вы можете использовать простой триггер:

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

РЕДАКТИРОВАТЬ: я забыл упомянуть, что latN и longN - и поэтому dx и dy - могут быть в градусах или радианах, если вы не смешиваете единицы измерения. angle, однако, всегда будет возвращаться в радианах. Конечно, вы можете получить его обратно в градусах, если умножить на 180 / M_PI.

1 голос
/ 14 ноября 2013

Вот Android-версия этого кода

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;
    }
...