我想找到两个已知地理位置之间的角度。基本上我想要的是,我想指示一个箭头,其尾点位于我当前位置,箭头指向一个固定的地理位置。 所以我在想,不管怎么说,我能够在这两个地理位置之间找到一个角度,然后我可以做同样的事情。
你们有什么建议以更好的方式做到这一点。任何帮助将不胜感激。
答案 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椭圆体定义距离和轴承。”