加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如何使用Java代码找到两个ZipCodes之间的距离?

发布时间:2020-12-14 05:09:21 所属栏目:Java 来源:网络整理
导读:我的要求类似于 this question,除了我被禁止使用纬度和经度值的事实.我想要计算两个邮政编码之间的“走”距离.后来我还需要查询“谁在X kms内?” 我不知道是否可以实现.真的可以找到两个给定的邮政编码之间的距离吗?我不想要仅适用于美国/英国邮政编码的答
我的要求类似于 this question,除了我被禁止使用纬度和经度值的事实.我想要计算两个邮政编码之间的“走”距离.后来我还需要查询“谁在X kms内?”

我不知道是否可以实现.真的可以找到两个给定的邮政编码之间的距离吗?我不想要仅适用于美国/英国邮政编码的答案.我需要一个通用的解决方案,它将适用于世界上任何两个邮政编码.

如果距离的计算不使用Langitude&经度是不可能得到给定的ZIPCODE的Langitude /经度值? (惊人)但如何?

任何教程/示例都将有很大的帮助.因为我正在开展一个商业项目,不能使用Google Maps API.所以请不要建议任何其他许可的服务.

提前致谢,

UPDATE
this question的答案之一建议使用MySQL或Postgress …会为我工作吗?

解决方法

如果你有兴趣,这里是我的java实现的 haversine formula
/**
 * Calculates the distance in km between two lat/long points
 * using the haversine formula
 */
public static double haversine(
        double lat1,double lng1,double lat2,double lng2) {
    int r = 6371; // average radius of the earth in km
    double dLat = Math.toRadians(lat2 - lat1);
    double dLon = Math.toRadians(lng2 - lng1);
    double a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
       Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) 
      * Math.sin(dLon / 2) * Math.sin(dLon / 2);
    double c = 2 * Math.atan2(Math.sqrt(a),Math.sqrt(1 - a));
    double d = r * c;
    return d;
}

我特此捐赠给公共场所GPL

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读