2

ジオポイントを使用して建物を描画しているMapViewがあります。現在、アプリはあなたの長い/緯度をチェックし、建物と比較するだけであなたに最も近い建物を決定します。しかし、私ができるようにしたいのは、デバイスを建物に向けて、建物があなたに最も近い建物でなくても、その建物の情報をポップアップ表示させることです。

私はこれを達成する方法を調べました、そして私はORIENTATIONセンサーリスナーから受け取った方位角方向を使用するでしょう。その方位角方向を使用して、地図上の建物の1つを遮っているかどうかを判断するのに問題があります。

これを達成するために、ORIENTATIONセンサーと方位角を使用しますか?これをどのように実装しますか?助けていただければ幸いです。

4

1 に答える 1

0

解決策を見つけました:

私はこの関数(およびヘルパー関数)を使用して、現在の場所から私の周りの最も近い建物までの方位を取得しました(設定された半径を使用):

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()));
}

周囲の建物の方位がわかったら、次に、それをTYPE_ORIENTATIONセンサーのSensorEventListenerを使用して携帯電話が配置されている方位と比較して、最も近い建物のどれを指しているかを確認する必要があります。

于 2011-04-21T15:05:57.243 に答える