0

知っているlocation1.distanceTo(location2)

計算する必要があります

distanceX

distanceY

2つの場所から。それを行う方法はありますか?

njzk2の回答に基づく正解

private Point getDistanceXY(Location location1, Location location2) {

    int angle = (int) location1.bearingTo(location2);

    Location interm  = new Location(location1);
    interm.setLongitude(location2.getLongitude());

    int distanceX = (int) location1.distanceTo(interm);
    int distanceY = (int) location2.distanceTo(interm);

    if (angle<=-90) distanceX=-distanceX;
    else if (angle>-90 && angle<0) {
        distanceX=-distanceX;
        distanceY=-distanceY;
    }

    Log.e("distXY "+name, distanceX+"  "+distanceY+" "+angle);

    return new Point(distanceX, distanceY);
}
4

2 に答える 2

2

あなたができることは、中間点を作成することです:

Location interm = new Location(location1);
iterm.setLongitude(location2.getLongitude());

その後、

double distanceX = location1.distance(interm);
double distanceY = interm.distance(location2);
于 2013-01-25T16:59:46.590 に答える
1

BearingTo()をdistanceTo()および少しの三角法と組み合わせて使用​​して、XおよびYコンポーネントを計算できます。

double distY = distance * sin(angle);
double distX = distance * cos(angle);
于 2013-01-25T16:59:15.030 に答える