java - 查找距离我的位置 180 度(南)1 公里的位置

标签 java android geolocation location

我有一个位置(纬度和经度),我想找到下一个位置(纬度和经度),该位置距我的位置(纬度和经度)180 度(南)1 公里。你能给我算法或函数吗?

最佳答案

Rosetta code 开始Java 实现:

public static double haversine(double lat1, double lon1, double lat2, double lon2) {
    double dLat = Math.toRadians(lat2 - lat1);
    double dLon = Math.toRadians(lon2 - lon1);
    lat1 = Math.toRadians(lat1);
    lat2 = Math.toRadians(lat2);

    double a = Math.pow(Math.sin(dLat / 2),2) + Math.pow(Math.sin(dLon / 2),2) * Math.cos(lat1) * Math.cos(lat2);
    double c = 2 * Math.asin(Math.sqrt(a));
    return R * c;
}

如果您知道lon1 == lon2,那么很多代码就会直接消失,因为dLon == 0:

public static double haversine(double lat1, double lat2) {
    double dLat = Math.toRadians(lat2 - lat1);
    return R * dLat;
}

(这应该类似于长度 = 半径 * 以弧度表示的角度公式)

因此,如果您知道 R = 6372.8,并且您想要的结果是 1,那么很容易得出 dLat 的值:

dLat = 1.0 / 6372.8;

换句话说,只需从当前纬度中减去 1.0/6372.8(并记住小心处理小于 180 - 1.0/6372.8 的纬度点)。

关于java - 查找距离我的位置 180 度(南)1 公里的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37348207/

相关文章:

java - 具有双单元格类型精度的 Jtable

android - 更改 pagerTabStrip tabIndicator 的高度

android - 我如何向 Facebook 中的特定好友发送消息或通知

java - Spring mvc,为什么我的模型没有更新?怎么修 ?

Java For 数组列表中的循环

android - 应用程序的启动时间

javascript - meteor 自动将地理位置保存到用户文档中

java - 如何使用 Selenium 默认启用地理位置?

javascript - 地理定位 - 如何从经度和纬度获取城市

java - 在另一个类中读取数组列表对象及其字段(java)