计算经纬度距离工具类

public class LocationUtils {

private static double EARTH_RADIUS = 6378.137;

private static double rad(double d) {
    return d * Math.PI / 180.0;
}

/**
 * 通过经纬度获取距离(单位:米)
 *
 * @param lat1
 * @param lng1
 * @param lat2
 * @param lng2
 * @return 距离
 */
public static double getDistance(double lat1, double lng1, double lat2,
        double lng2) {
    double radLat1 = rad(lat1);
    double radLat2 = rad(lat2);
    double a = radLat1 - radLat2;
    double b = rad(lng1) - rad(lng2);
    double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2)
            + Math.cos(radLat1) * Math.cos(radLat2)
            * Math.pow(Math.sin(b / 2), 2)));
    s = s * EARTH_RADIUS;
    s = Math.round(s * 10000d) / 10000d;
    s = s * 1000;
    return s;
}

public static void main(String[] args) {
    double distance = getDistance(34.2675560000, 108.9534750000,
            34.2464320000, 108.9534750000);
    System.out.println("距离" + distance / 1000 + "公里");
}

}

原文地址:https://blog.51cto.com/7218743/2373999

时间: 2024-10-10 17:20:14

计算经纬度距离工具类的相关文章

计算月份天数工具类

package timer; /** * @author mercy * 计算月份工具类 *闰年29天平年28天 */ public class CalculateDay { public static void main(String[] args) { int year=1700; int month=2; int day= getDay(year,month); System.out.println(day); } public static int getDay(int year,int

计算月份差工具类

满足的要求是Timestamp的类型,计算时间差,若满不足一个月按一个月计算.用户5月27订购的,到6月27日到期,即使是5月有31天. package file; import java.sql.Timestamp; public class timeUtil { public static void main(String[] args) { String time1="2000-02-29 01:12:12"; String time2="2000-03-30 12:1

java工具类 六 根据经纬度计算距离

Java实现根据经纬度计算距离 在项目开发过程中,需要根据两地经纬度坐标计算两地间距离,所用的工具类如下: Demo1: public static double getDistatce(double lat1, double lat2, double lon1, double lon2) { double R = 6371; double distance = 0.0; double dLat = (lat2 - lat1) * Math.PI / 180; double dLon = (lo

.NET资料之-根据两点经纬度计算直线距离

最近做东西碰到要根据两点经纬度计算之间的直线距离,就网上找了查了下资料.因为这类接触的比较少,就直接找现成的代码了,没怎么研究.代码如下,作为记录. private const double EARTH_RADIUS = 6378.137;//地球半径 private static double rad(double d) { return d * Math.PI / 180.0; } public static double GetDistance(double lat1, double ln

根据经纬度和半径计算经纬度范围,根据两点经纬度计算距离

这些经纬线是怎样定出来的呢?地球是在不停地绕地轴旋转(地轴是一根通过地球南北两极和地球中心的假想线),在地球中腰画一个与地轴垂直的大圆圈,使圈上的每一点都和南北两极的距离相等,这个圆圈就叫作“赤道”.在赤道的南北两边,画出许多和赤道平行的圆圈,就是“纬圈”:构成这些圆圈的线段,叫做纬线.我们把赤道定为纬度零度,向南向北各为90度,在赤道以南的叫南纬,在赤道以北的叫北纬.北极就是北纬90度,南极就是南纬90度.纬度的高低也标志着气候的冷热,如赤道和低纬度地地区无冬,两极和高纬度地区无夏,中纬度地区

根据两点的经纬度计算两地距离

学着做项目需要根据很据给出的两点经纬度信息计算两地的实际距离,查了查,有公式奉上: google地图提供的方法: 相关c#代码如下 private static double rad(double d) { return d * Math.PI / 180.0; } //根据两点的经纬度计算两地距离 public static double GetDistance(double lon1, double lat1, double lon2, double lat2) { double radLa

精确计算工具类,提供加减乘除的计算

package com.ljq.util; import java.math.BigDecimal; /** * 精确计算工具类,提供加减乘除的计算 * * @author jqlin */ public class CompuUtils { /**小数点后保留的位数*/ public final static int SCALE = 5; /** 0 */ public final static int ZERO = 0; /** * BigDecimal大小比较 * * @param a *

BigDecimal工具类处理精度计算

1 /** 2 * Created by My_coder on 2017-07-27. 3 * 加减乘除计算工具类 4 */ 5 public class BigDecimalUtil { 6 private BigDecimalUtil() { 7 } 8 9 /** 10 * 加 11 */ 12 public static BigDecimal add(Double v1, Double v2){ 13 BigDecimal b1 = new BigDecimal(v1.toString

Java获取时间 时间计算 转换时间工具类

Java获取时间 时间计算 转换时间工具类 JAVA日期工具类 package com.mh.util; import java.sql.Timestamp; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * 时间日期转换工具类 */ public class DateTimeUtil { /** *