如何旋转箭头(ImageView)指向目标位置

时间:2014-03-12 14:32:14

标签: android rotation imageview location

我遇到了ImageView Rotation的问题。我有带箭头的IMageView(简单的png图像)我想将该图像旋转到我当前位置的目标位置。我已经尝试了很多可能性,但每次角度都不好(使用lat,通过点击目标来使用谷歌地图长)

例如我使用了在这个论坛上找到的代码:

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

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 :(得分:0)

你可以用毕达哥拉斯计算它......

首先找出坐标在哪个部分,然后使用余弦定律计算角度,并为相应部分的角度添加正确的度数。

有点脏,但它确实有效。

enter image description here

答案 1 :(得分:0)

好的我有一个答案,我使用传感器来获取AZIMUTH并计算角度:getting direction

在旋转图像之前进行标记检查是非常重要的,否则它会像疯了一样在许多不同的方向旋转; p

由于