Android 在没有目的地的谷歌地图上获得x公里后的经纬度?

Android 在没有目的地的谷歌地图上获得x公里后的经纬度?,android,google-maps,geolocation,latitude-longitude,google-directory-api,Android,Google Maps,Geolocation,Latitude Longitude,Google Directory Api,我正在创建一个Android应用程序,它需要在X公里后找到同一路线上的坐标 我在道路上有两个坐标x1,y1和x2,y2。现在,我的要求是在同一条道路上大约3公里后找到坐标x3,y3(即x2,y2后的坐标,而不是x1,y1和x2,y2) 如何实现这一点?如果知道目标坐标,可以计算目标坐标 示例代码: private LatLng getDestinationPoint(LatLng source, double brng, double dist) { dist = dist /

我正在创建一个
Android
应用程序,它需要在X公里后找到同一路线上的坐标

我在道路上有两个坐标
x1,y1
x2,y2
。现在,我的要求是在同一条道路上大约3公里后找到坐标
x3,y3
(即
x2,y2
后的坐标,而不是
x1,y1
x2,y2

如何实现这一点?

如果知道目标坐标,可以计算目标坐标

示例代码:

private LatLng getDestinationPoint(LatLng source, double brng, double dist) {
        dist = dist / 6371;
        brng = Math.toRadians(brng);

        double lat1 = Math.toRadians(source.latitude), lon1 = Math.toRadians(source.longitude);
        double lat2 = Math.asin(Math.sin(lat1) * Math.cos(dist) +
                                Math.cos(lat1) * Math.sin(dist) * Math.cos(brng));
        double lon2 = lon1 + Math.atan2(Math.sin(brng) * Math.sin(dist) *
                                        Math.cos(lat1),
                                        Math.cos(dist) - Math.sin(lat1) *
                                        Math.sin(lat2));
        if (Double.isNaN(lat2) || Double.isNaN(lon2)) {
            return null;
        }
        return new LatLng(Math.toDegrees(lat2), Math.toDegrees(lon2));
    }
示例用法:

   double radiusInKM = 10.0;
   double bearing = 90;
   LatLng destinationPoint = getDestinationPoint(new LatLng((25.48, -71.26), bearing, radiusInKM);
或者,您可以在点A和点B之间使用航向,而不是方向角:

LatLng destinationPoint = getDestinationPoint(new LatLng(37.4038194,-122.081267), SphericalUtil.computeHeading(new LatLng(37.7577,-122.4376), new LatLng(37.4038194,-122.081267)), radiusInKM);
SphericalUtil.computeHeading(p1,p2)方法来自

这是基于中的Javascript方法


如果您想在同一条道路上获得该点,您可以结帐。

您必须提供更多关于您想要实现的目标的信息,因为距离一条道路3公里处可能有无限多个点point@tyczj.. 是的,有无限多的可能点。但是,这里我的要求是,在两个点(x1,y1)和(x2,y2)之间存在路由。现在,我想要在同一条路线上行驶3公里后的第三个点。它是沿着前两条车道确定的同一个航向,还是沿着那条路,可能在3公里的另一个航向?如果是这样的话,那么我认为您正在寻找某种导航库或服务。@DiscoS2。。。我需要沿着前两条经线确定的相同航向。你应该首先了解什么是路线,什么是航向。你的问题与你的评论不符。给定起点坐标和航向(0-360°)以及距离的坐标偏移与路线、街道或谷歌地图无关。检查是否可以将第一句中的“路线”一词替换为“方向”。问题是模棱两可的,目的地应该在路上,而不仅仅是方位。此外,由于不清楚OP问了什么,您没有解释您的计算结果。对于一个甚至连问题都不清楚的人来说,这对他来说帮不了什么忙。其他弱点;距离的单位是米,不是公里。所以函数应该使用meter。WGS84坐标系的地球半径(如谷歌和所有其他用途)定义更为精确,使用WGS84地球半径,而不仅仅是手工计算的航空公式中使用的6371的近似值,该代码来自于此from@ztan.. 如何获取两个坐标之间的方位角?@TaruniNeema,您可以使用
computeHeading()
从Android地图实用程序库中,请检查我编辑的答案。@ztan:嗨,ztan,你的计算没有给我在同一条道路上正确计算的目的地。可能是因为它没有计算正确的方向角,有时它给出了道路的左侧或右侧,并且根据我在函数中经过的距离,目的地距离较远,例如点A(24.954540,55.076223)、点B(24.955109,55.076797)和计算的目的地C(24.95612333209401,55.086653040721835)。你能在地图上查一下吗?这样你就能知道我在说什么了吗?@AlexWien:你能帮我在路上查一下,而不仅仅是在方位上,根据你上面的评论吗?