获取两点之间的坐标

时间:2016-08-29 20:09:08

标签: java android rest api google-maps

我正在使用我制作的Java程序,作为名为Firebase的休息平台的客户端。

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

所以我的问题是,如果我有A点和B点的纬度和经度,我怎样才能计算这两点之间的坐标?

想象一下这种情况

  • A点(左)纬度:39.091868长:-9.263187
  • B点(右) lat:39.089815 long:-9.261857

enter image description here

如何计算这些点之间的10个坐标?

3 个答案:

答案 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