两个已知的android地理位置之间的角度

时间:2011-05-31 14:38:20

标签: android geolocation angle

我想找到两个已知地理位置之间的角度。基本上我想要的是,我想指示一个箭头,其尾点位于我当前位置,箭头指向一个固定的地理位置。 所以我在想,不管怎么说,我能够在这两个地理位置之间找到一个角度,然后我可以做同样的事情。

你们有什么建议以更好的方式做到这一点。任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:4)

答案 1 :(得分:2)

我想达到同样的目标。使用this引用计算角度如下:

private double angleFromCoordinate(double lat1, double long1, double lat2,
        double long2) {

    double dLon = (long2 - long1);

    double y = Math.sin(dLon) * Math.cos(lat2);
    double x = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1)
            * Math.cos(lat2) * Math.cos(dLon);

    double brng = Math.atan2(y, x);

    brng = Math.toDegrees(brng);
    brng = (brng + 360) % 360;
    brng = 360 - brng;

    return brng;
}

然后将ImageView旋转到此角度

private void rotateImage(ImageView imageView, double angle) {

    Matrix matrix = new Matrix();
    imageView.setScaleType(ScaleType.MATRIX); // required
    matrix.postRotate((float) angle, imageView.getDrawable().getBounds()
            .width() / 2, imageView.getDrawable().getBounds().height() / 2);
    imageView.setImageMatrix(matrix);
}

答案 2 :(得分:0)

这真的很简单。如果它们足够接近,您可以使用平面几何体。取两个位置,找出将两个位置作为锐角的直角三角形,并计算。

已经有了基本数学的链接。

有一件事 - 如果位置相距很远,你会想要使用球形触发,否则角度会不准确。

嗯,一个链接...... http://www.easycalculation.com/trigonometry/triangle-angles.php

答案 3 :(得分:0)

我不确定我明白你想做什么,但检查一下: Android Reference, Location, distanceBetween(double startLatitude, double startLongitude, double endLatitude, double endLongitude, float[] results)

结果参数应该是浮点数组 - 至少2个元素。然后在结果[0]中,您会发现距离和结果1在这两点之间。重要的是“使用WGS84椭圆体定义距离和轴承。”