`

Java根据两点的经纬度来计算之间的距离

 
阅读更多

 

代码如下:

import java.util.HashMap;

import java.util.Map;

  

public class MapDistance { 

        

    private static double EARTH_RADIUS = 6378.137; 

    

    private static double rad(double d) { 

        return d * Math.PI / 180.0; 

    }

      

    /**

     * 根据两个位置的经纬度,来计算两地的距离(单位为KM)

     * 参数为String类型

     * @param lat1 用户经度

     * @param lng1 用户纬度

     * @param lat2 商家经度

     * @param lng2 商家纬度

     * @return

     */

    public static String getDistance(String lat1Str, String lng1Str, String lat2Str, String lng2Str) {

        Double lat1 = Double.parseDouble(lat1Str);

        Double lng1 = Double.parseDouble(lng1Str);

        Double lat2 = Double.parseDouble(lat2Str);

        Double lng2 = Double.parseDouble(lng2Str);

          

        double radLat1 = rad(lat1);

        double radLat2 = rad(lat2);

        double difference = radLat1 - radLat2;

        double mdifference = rad(lng1) - rad(lng2);

        double distance = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(difference / 2), 2)

                + Math.cos(radLat1) * Math.cos(radLat2)

                * Math.pow(Math.sin(mdifference / 2), 2)));

        distance = distance * EARTH_RADIUS;

        distance = Math.round(distance * 10000) / 10000;

        String distanceStr = distance+"";

        distanceStr = distanceStr.

            substring(0, distanceStr.indexOf("."));

          

        return distanceStr;

    }

      

    /**

     * 获取当前用户一定距离以内的经纬度值

     * 单位米 return minLat

     * 最小经度 minLng

     * 最小纬度 maxLat

     * 最大经度 maxLng

     * 最大纬度 minLat

     */

    public static Map getAround(String latStr, String lngStr, String raidus) {

        Map map = new HashMap();

          

        Double latitude = Double.parseDouble(latStr);// 传值给经度

        Double longitude = Double.parseDouble(lngStr);// 传值给纬度

  

        Double degree = (24901 * 1609) / 360.0; // 获取每度

        double raidusMile = Double.parseDouble(raidus);

          

        Double mpdLng = Double.parseDouble((degree * Math.cos(latitude * (Math.PI / 180))+"").replace("-", ""));

        Double dpmLng = 1 / mpdLng;

        Double radiusLng = dpmLng * raidusMile;

        //获取最小经度

        Double minLat = longitude - radiusLng;

        // 获取最大经度

        Double maxLat = longitude + radiusLng;

          

        Double dpmLat = 1 / degree;

        Double radiusLat = dpmLat * raidusMile;

        // 获取最小纬度

        Double minLng = latitude - radiusLat;

        // 获取最大纬度

        Double maxLng = latitude + radiusLat;

          

        map.put("minLat", minLat+"");

        map.put("maxLat", maxLat+"");

        map.put("minLng", minLng+"");

        map.put("maxLng", maxLng+"");

          

        return map;

    }

      

    public static void main(String[] args) {

        //测试经纬度:117.11811  36.68484

        //测试经纬度2:117.00999000000002  36.66123

        //System.out.println(getDistance("117.11811","36.68484","117.00999000000002","36.66123"));

          

        System.out.println(getAround("117.11811", "36.68484", "13000"));

        //117.01028712333508(Double), 117.22593287666493(Double),

        //36.44829619896034(Double), 36.92138380103966(Double)

          

    }

      

}

 

 

http://www.cnblogs.com/sprinng/p/4922999.html

 

 

分享到:
评论

相关推荐

    java根据两点经纬度计算距离

    6. 文件处理:在“两点经纬度计算距离-输入地址得到经纬度”这个文件中,可能包含了将地址转换为经纬度的逻辑。这通常涉及调用地图API的地理编码服务,将街道地址解析为对应的经纬度坐标。 总之,从给定的标题和...

    Java计算两个经纬度点之间距离算法

    Java计算两个经纬度点之间距离(以米为单位)算法, 纯Java代码, 可供参考。 在具体项目中使用过。

    计算两个经纬度之间的距离Java

    总结来说,"计算两个经纬度之间的距离Java"这个话题涵盖了地理坐标、Haversine公式以及API的使用。通过理解这些概念,开发者可以构建出能够处理各种地理位置问题的实用工具,比如距离查询、路径规划等。

    通过两点经纬度,计算他们之间的距离 - JAVA

    在JAVA编程中,计算两点经纬度之间的距离是一个常见的地理计算任务,主要应用于地图应用、导航系统或者地理位置服务等。这个任务通常使用哈弗辛公式(Haversine formula)来实现,该公式基于球面三角学,可以计算...

    java计算两个经纬度之间的距离

    首先,将角度转换为弧度,然后根据Haversine公式计算距离。 如果你有一个包含多个地点的列表,并希望按照由近及远的距离排序,你可以创建一个类来表示地点,并实现Comparable接口,比较两个地点与目标地点的距离。...

    经纬度计算距离、方位角等java源码

    在IT行业中,尤其是在地理信息系统(GIS)或者地图应用开发中,计算地球上两点之间的距离和方位角是一项基础且重要的任务。本篇文章将详细讲解如何利用Java编程语言实现这一功能,主要基于给定的"经纬度计算"标签...

    WGS84坐标下根据经纬度计算两点之间的距离

    通常,这种距离计算基于球面三角学原理,利用地球的平均半径来近似计算两点间的大圆弧长度。 #### 三、计算公式详解 在给定的部分内容中,提供了一个计算两点间距离的函数`geodist`。下面对该函数进行详细解析: ...

    java实现 根据经纬度算距离

    通过经纬度算出两点间的距离,经过仔细对比及参照,相对精确度较高,请大家放心使用

    经过两点之间经纬度计算直线距离

    经过两点之间经纬度计算直线距离,两种方法皆可用

    计算两点之间距离java

    java利用两点经纬度计算两点之间的距离java利用两点经纬度计算两点之间的距离java利用两点经纬度计算两点之间的距离java利用两点经纬度计算两点之间的距离java利用两点经纬度计算两点之间的距离

    已知2点经纬度计算相对方位及距离

    已知A,B点的经度、纬度、高度,计算A相对于B的北向方位及距离,或者计算B相对于A的北向方位及距离。如果有高度,利用距离和高度再算出俯仰角

    mysql函数-根据经纬度坐标计算距离

    在二维平面上,我们可以使用余弦定理来计算两点间的欧氏距离,但在地球上,需要使用哈弗辛公式(Haversine Formula): 哈弗辛公式如下: \[ a = \sin^2\left(\frac{\Delta \phi}{2}\right) + \cos(\phi_1) \cdot \...

    批量根据经纬度计算距离

    这个“批量根据经纬度计算距离”的项目就是这样一个实例,它涉及到地理坐标系统、经纬度的转换以及地球表面的距离计算。以下是对这个主题的详细说明: 1. **地理坐标系统**:地球被划分为一个网格系统,称为地理...

    根据两点经纬度求距离

    根据两点经纬度求距离

    Java 计算两个GPS坐标点之间的距离.txt

    Java 计算两个GPS坐标点之间的距离 JAVA 计算两个经纬度关系计算 - FALCON - 斑驳的蓝调 1. Lat1 Lung1 表示A点经纬度,Lat2 Lung2 表示B点经纬度; 2. a=Lat1 – Lat2 为两点纬度之差 b=Lung1 -Lung2 为两点经度...

    Java版_经纬度两点间距离计算(LngLat)

    ### Java版_经纬度两点间距离计算(LngLat) #### 概述 本文将详细介绍一个用Java实现的计算两个地理位置(通过经纬度表示)之间距离的方法。该方法基于Haversine公式,这是一种广泛用于导航领域中的算法,可以精确...

    java实现经纬度计算距离

    在这种情况下,两点之间的大圆距离可以使用哈弗辛公式(Haversine formula)来计算。哈弗辛公式基于球面三角学,用于计算地球上任意两点之间的最短距离。 哈弗辛公式的计算过程如下: 1. 将经纬度转换为弧度:地球...

    Java地图工具类计算地球上两点之间的距离

    在Java编程中,地图工具类通常用于处理与地理坐标系统相关的任务,比如计算地球上两点之间的距离。本篇文章将深入探讨如何使用Java实现这样的工具类,以及涉及到的关键算法和概念。 首先,我们需要理解地理坐标系统...

    根据当前坐标(经纬度)计算附近位置-java版本

    根据已知点坐标计算附近位置,代码详细解释了三种计算策略。主要涉及日常需要解决问题,例如类似于滴滴打车实现查找附近车辆业务逻辑和贝壳找房根据指定位置筛选出附近房源,上述两场场景应用可借鉴代码中两种方法...

    hive-udf(两地址间距离计算+省市区位置解析(Java代码))

    首先,地址转换成经纬度是计算距离的基础。地理坐标系统通常使用经度和纬度来定位地球上任意一点的位置。在Java中,我们可以使用第三方库如GeoTools或Google的Geocoding API来将地址解析为对应的经纬度坐标。这个...

Global site tag (gtag.js) - Google Analytics