我正在使用我制作的Java程序,作为名为Firebase的休息平台的客户端。
我还有一个Android应用程序可以从Firebase平台读取坐标,以更新谷歌地图上的标记。
所以我的问题是,如果我有A点和B点的纬度和经度,我怎样才能计算这两点之间的坐标?
想象一下这种情况
如何计算这些点之间的10个坐标?
答案 0 :(得分:1)
如果我理解正确,你想要中点(准确指向两个位置的中间位置)。
这个网页非常适合所有这些事情。 http://www.movable-type.co.uk/scripts/latlong.html
在Android中,它看起来像这样:
public LatLng midPoint(LatLng A, LatLng B) {
double phi1 = Math.toRadians(A.latitude);
double gamma1 = Math.toRadians(A.longitude);
double phi2 = Math.toRadians(B.latitude);
double deltaGamma = Math.toRadians(B.longitude - A.longitude);
double aux1 = Math.cos(phi2) * Math.cos(deltaGamma);
double aux2 = Math.cos(phi2) * Math.sin(deltaGamma);
double x = Math.sqrt((Math.cos(phi1) + aux1) * (Math.cos(phi1) + aux1) + aux2 * aux2);
double y = Math.sin(phi1) + Math.sin(phi2);
double phi3 = Math.atan2(y, x);
double gamma3 = gamma1 + Math.atan2(aux2, Math.cos(phi1) + aux1);
// normalise to −180..+180°
return new LatLng(Math.toDegrees(phi3), (Math.toDegrees(gamma3) + 540) % 360 - 180);
}
答案 1 :(得分:1)
请通过球面几何体尝试interpolate()
方法。
如Calculate distances, areas and headings via spherical geometry中所述,使用SphericalUtil
中的球面几何实用程序,您可以根据纬度和经度计算距离,面积和标题。如上所述,这种方法是:
interpolate()
- 返回位于两个给定点之间距离的给定部分的点的纬度/经度坐标。
此blog中提供的其他信息和示例代码也可能对实施部分有帮助。
答案 2 :(得分:-1)
如果你希望这两个点之间的坐标成直线,你可以做一些简单的数学计算......
如果您希望这些积分在路上,您必须使用Google Directions API。