获取经纬度之间距离的Java工具类

public class GeoUtil { 
   
    /**
     * 根据经纬度和距离返回一个矩形范围
     * 
     * @param lng
     *            经度
     * @param lat
     *            纬度
     * @param distance
     *            距离(单位为米)
     * @return [lng1,lat1, lng2,lat2] 矩形的左下角(lng1,lat1)和右上角(lng2,lat2)
     */ 
    public static double[] getRectangle(double lng, double lat, long distance) { 
        float delta = 111000; 
        if (lng != 0 && lat != 0) { 
            double lng1 = lng - distance 
                    / Math.abs(Math.cos(Math.toRadians(lat)) * delta); 
            double lng2 = lng + distance 
                    / Math.abs(Math.cos(Math.toRadians(lat)) * delta); 
            double lat1 = lat - (distance / delta); 
            double lat2 = lat + (distance / delta); 
            return new double[] { lng1, lat1, lng2, lat2 }; 
        } else { 
            // TODO ZHCH 等于0时的计算公式 
            double lng1 = lng - distance / delta; 
            double lng2 = lng + distance / delta; 
            double lat1 = lat - (distance / delta); 
            double lat2 = lat + (distance / delta); 
            return new double[] { lng1, lat1, lng2, lat2 }; 
        } 
    } 
   
    /**
     * 得到两点间的距离 米
     * 
     * @param lat1 第一点纬度
     * @param lng1 第一点经度
     * @param lat2 第二点纬度
     * @param lng2 第二点经度
     * @return
     */ 
    public static double getDistanceOfMeter(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 * 10000) / 10; 
        return s; 
    } 
       
    private static double rad(double d) { 
        return d * Math.PI / 180.0; 
    } 
   
    /**
     * 地球半径:6378.137KM
     */ 
    private static double EARTH_RADIUS = 6378.137; 
   
}
时间: 2024-11-07 03:44:51

获取经纬度之间距离的Java工具类的相关文章

获取经纬度之间两点间真实距离(适用于GoogleMap,BaiduMap,Amap等)

如何获取经纬度之间两点间真实距离(适用于GoogleMap,BaiduMap,Amap等) 目标:使用百度定位sdk开发实时移动距离计算功能,根据经纬度的定位,计算行驶公里数并实时刷新界面显示.大家都知道定位有三种方式:GPS .Wifi . 基站 .误差方面的话,使用GPS误差在10左右,Wifi则在20 - 300左右 ,而使用基站则误差在100 - 300左右的样子,因为在室内GPS是定位不到的,必须在室外,而我们项目的需求正好需要使用GPS定位,所以我们这里设置GPS优先.车,不可能在室

Java工具类

目录                                                                                             Math Random Date Carlendar DateFormat SimpleDateFoemat Comparator Clone Math                                                                               

排名前 16 的 Java 工具类

在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. org.apache.commons.io.IOUtils closeQuietly:关闭一个IO流.socket.或者selector且不抛出异常,通常放在finally块 toString:转换IO流. Uri. byte[]为String copy:IO流数据复制,从输入流写到输出流中,最大支

排名前16的Java工具类

原文:https://www.jianshu.com/p/9e937d178203 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. org.apache.commons.io.IOUtils closeQuietly:关闭一个IO流.socket.或者selector且不抛出异常,通常放在finally块 toString:转换IO流. Uri.

常用高效 Java 工具类总结

一.前言 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 二.org.apache.commons.io.IOUtils closeQuietly:关闭一个IO流.socket.或者selector且不抛出异常,通常放在finally块 toString:转换IO流. Uri. byte[]为String copy:IO流数据复制,从输入流写到输出流中

16 个超级实用的 Java 工具类

阅读本文大概需要 4 分钟. 出处:alterem juejin.im/post/5d4a25b351882505c105cc6e 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类. 以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. org.apache.commons.io.IOUtils closeQuietly:关闭一个IO流.socket.或者selector且不抛出异常,通常放在fina

超级实用的 Java 工具类

超级实用的 Java 工具类 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. org.apache.commons.io.IOUtils closeQuietly:关闭一个IO流.socket.或者selector且不抛出异常,通常放在finally块 toString:转换IO流. Uri. byte[]为String copy:IO流数据复制

【小技巧】排名前 16 的 Java 工具类!

转自java技术栈: https://mp.weixin.qq.com/s?__biz=MzI3ODcxMzQzMw==&mid=2247485460&idx=1&sn=cef982d688a5b0ef5e42a4301961f54b&chksm=eb538d22dc240434251b32f924cd44b7ac68c041dbe84d264c2ea0156902c7d2c816581b65da&scene=21#wechat_redirect 在Java中,工具

第一章 Java工具类目录

在这一系列博客中,主要是记录在实际开发中会常用的一些Java工具类,方便后续开发中使用. 以下的目录会随着后边具体工具类的添加而改变. 浮点数精确计算 第二章 Java浮点数精确计算