Определите, на что указывает ваше устройство Android - PullRequest
2 голосов
/ 19 апреля 2011

У меня есть MapView, в котором я рисую здания, используя гео-точки.В настоящее время приложение определяет ближайшее к вам здание, просто проверив ваш long / lat и сравнив его со зданиями;но то, что я хочу сделать, - это навести мое устройство на здание и показать информацию о зданиях, даже если это не самое близкое вам здание.

Я посмотрел, как это сделать.и я буду использовать направление азимута, полученное от слушателя датчика ОРИЕНТАЦИИ.У меня возникают проблемы с использованием этого азимутального направления и определения, пересекает ли оно одно из зданий на карте.

Буду ли я использовать датчик ОРИЕНТАЦИИ и азимут для достижения этой цели?Как бы я пошел на реализацию этого?Любая помощь приветствуется!

1 Ответ

0 голосов
/ 21 апреля 2011

Разобрался с решением:

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

public static float calculateBearing(GeoPoint before, GeoPoint after) {
    Point pBefore = location2Point(before);
    Point pAfter = location2Point(after);

    float res = -(float) (Math.atan2(pAfter.y - pBefore.y, pAfter.x
            - pBefore.x) * 180 / Math.PI) + 90.0f;
    if (res < 0)
        return res + 360.0f;
    else
        return res;
}

public static Point location2Point(GeoPoint aLocation) {
    return new Point((int) (aLocation.getLongitudeE6()),
            (int) (aLocation.getLatitudeE6()));
}

Как только у вас будут ориентиры зданий вокруг вас; Затем вы должны сравнить его с позицией, на которой расположен ваш телефон, используя SensorEventListener для датчика TYPE_ORIENTATION, чтобы выяснить, на какое из ближайших зданий вы указываете.

...