gpt4 book ai didi

android - 在没有目的地的情况下在 Google map 上 x 公里后获取纬度经度?

转载 作者:行者123 更新时间:2023-12-05 00:09:50 26 4
gpt4 key购买 nike

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

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

如何实现?

最佳答案

如果你知道 bearing ,就可以计算出目的地坐标。

示例代码:

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);

或者您可以在 pointA 和 pointB 之间使用航向而不是方位:

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); 方法来自 Android Google Maps Utility library .

这是基于 this Stackoverflow answer 中的 Javascript 方法.

如果你想要同一条路上的点,你可以查看this PHP answer .

关于android - 在没有目的地的情况下在 Google map 上 x 公里后获取纬度经度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31077661/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com