Java 获取两点之间的坐标

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个坐标?如果你想让这些坐标在这两个点之间呈直线,你可以做一些简单的数学计算 如

我正在使用我制作的一个Java程序,作为rest平台Firebase的客户端

我还有一个android应用程序,可以从Firebase平台读取坐标,更新谷歌地图上的标记

所以我的问题是,如果我有A点和B点的纬度和经度,我如何计算这两个点之间的坐标

想象一下这种情况

  • 点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之间的距离