Java 获取两点之间的坐标
我正在使用我制作的一个Java程序,作为rest平台Firebase的客户端 我还有一个android应用程序,可以从Firebase平台读取坐标,更新谷歌地图上的标记 所以我的问题是,如果我有A点和B点的纬度和经度,我如何计算这两个点之间的坐标 想象一下这种情况Java 获取两点之间的坐标,java,android,rest,api,google-maps,Java,Android,Rest,Api,Google Maps,我正在使用我制作的一个Java程序,作为rest平台Firebase的客户端 我还有一个android应用程序,可以从Firebase平台读取坐标,更新谷歌地图上的标记 所以我的问题是,如果我有A点和B点的纬度和经度,我如何计算这两个点之间的坐标 想象一下这种情况 点A(左)纬度:39.091868长:-9.263187 B点(右) 纬度:39.089815长:-9.261857 例如,我如何计算这些点之间的10个坐标?如果你想让这些坐标在这两个点之间呈直线,你可以做一些简单的数学计算 如
- 点A(左)纬度:39.091868长:-9.263187
- B点(右) 纬度:39.089815长:-9.261857
例如,我如何计算这些点之间的10个坐标?如果你想让这些坐标在这两个点之间呈直线,你可以做一些简单的数学计算
如果你想让这些积分在路上,你就必须发挥作用 如果我理解正确,您需要中点(点正好位于直线上两个位置的中间) 这个网页对所有这类事情都很有帮助 在安卓系统中,它看起来像这样:
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);
}
请尝试通过球形几何体执行
interpolate()
方法
如中所述,使用SphericalUtil
中的球形几何体实用程序,可以基于纬度和经度计算距离、面积和标题。如上所述,该方法是:
–返回位于两个给定点之间距离的给定部分的点的纬度/经度坐标interpolate()
本文中提供的其他信息和示例代码也可能对您的实现部分有所帮助。因此您需要计算A和B之间的距离