地图相关的jar包

pom文件引入依赖:

<dependency>
   <groupId>org.gavaghan</groupId>
   <artifactId>geodesy</artifactId>
   <version>1.1.3</version>
</dependency>

package com.zhongben.common.util.map;

import org.gavaghan.geodesy.Ellipsoid;
import org.gavaghan.geodesy.GeodeticCalculator;
import org.gavaghan.geodesy.GeodeticCurve;
import org.gavaghan.geodesy.GlobalCoordinates;

/**
 * gen测试类
 */
public class GenUtil {

    public static void main(String[] args)
    {
        // //121.717594,31.12055    121.817629,31.090867
//        GlobalCoordinates source = new GlobalCoordinates(31.12055, 121.717594);
//        GlobalCoordinates target = new GlobalCoordinates(31.090867, 121.817629);
//
//        double meter1 = getDistanceMeter(source, target, Ellipsoid.Sphere);
//        double meter2 = getDistanceMeter(source, target, Ellipsoid.WGS84);
//
//        System.out.println("Sphere坐标系计算结果:"+meter1 + "米");
//        System.out.println("WGS84坐标系计算结果:"+meter2 + "米");


//        //坐标系
//        Ellipsoid ellipsoid = Ellipsoid.WGS84;
//        //起始位置
//        GlobalCoordinates start = new GlobalCoordinates(31.00001, 121.000001);
//        //结束位置
//        GlobalCoordinates end = new GlobalCoordinates(32.00005, 122.000005);
//        //距离 单位 米
//        double distance = 50;
//
//        //计算大地测量曲线
//        GeodeticCurve geodeticCurve = getCalculateGeodeticCurve(ellipsoid,start,end);
//        //启动轴承(度)
//        double startBearing = geodeticCurve.getAzimuth();
//
//        GlobalCoordinates globalCoordinates = getulateEndingGlobalCoordinates(ellipsoid,start,startBearing,distance);
//
//        System.out.println(globalCoordinates.toString());


        GlobalCoordinates distanceLonLat = getDistanceLonLat(Ellipsoid.WGS84, 23.010957255877614, 113.08593458404175, 23.04383276093276, 113.1036753731014, -5000.00);
        System.out.println("11111111111111111111111111");
        System.out.println(distanceLonLat.toString());
    }


    /**
     * 原来计算两个之间某个点经纬度
     * @param ellipsoid 坐标系
     * @param startLat 起始纬度
     * @param startLng 起始经度
     * @param startLat 结束纬度
     * @param startLng 结束经度
     * @param startLat 距离
     * @return
     */
    public static GlobalCoordinates getDistanceLonLat(Ellipsoid ellipsoid,Double startLat,Double startLng,Double endLat,Double endLng,Double distance)
    {

        //起始位置
        GlobalCoordinates start = new GlobalCoordinates(startLat, startLng);
        //结束位置
        GlobalCoordinates end = new GlobalCoordinates(endLat, endLng);
        //距离 单位 米
        //double distance = distance;

        //计算大地测量曲线
        GeodeticCurve geodeticCurve = getCalculateGeodeticCurve(ellipsoid,start,end);
        //启动轴承(度)
        double startBearing = geodeticCurve.getAzimuth();

        GlobalCoordinates globalCoordinates = getulateEndingGlobalCoordinates(ellipsoid,start,startBearing,distance);

        System.out.println(globalCoordinates.toString());
        return globalCoordinates;
    }


    /**
     * 计算两个点之间的距离
     * @param gpsFrom
     * @param gpsTo
     * @param ellipsoid
     * @return
     */
    public static double getDistanceMeter(GlobalCoordinates gpsFrom, GlobalCoordinates gpsTo, Ellipsoid ellipsoid)
    {
        //创建GeodeticCalculator,调用计算方法,传入坐标系、经纬度用于计算距离
        GeodeticCurve geoCurve = new GeodeticCalculator().calculateGeodeticCurve(ellipsoid, gpsFrom, gpsTo);

        return geoCurve.getEllipsoidalDistance();
    }

    /**
     * 计算指定基准上两点之间的大地测量曲线
     * @param start 起始位置
     * @param end 结束位置
     * @param ellipsoid 坐标系
     * @return
     */
    public static GeodeticCurve getCalculateGeodeticCurve(Ellipsoid ellipsoid, GlobalCoordinates start, GlobalCoordinates end)
    {
        GeodeticCurve geodeticCurve = new GeodeticCalculator().calculateGeodeticCurve(ellipsoid,start,end);
        return geodeticCurve;
    }

    /**
     * 计算指定基准上两点之间的大地测量曲线
     * @param start 起始位置
     * @param distance 距离
     * @param ellipsoid 坐标系
     * @param startBearing 大地测量曲线
     * @return
     */
    public static GlobalCoordinates getulateEndingGlobalCoordinates(Ellipsoid ellipsoid, GlobalCoordinates start, double startBearing, double distance)
    {
        GlobalCoordinates globalCoordinates = new GeodeticCalculator().calculateEndingGlobalCoordinates(ellipsoid,start,startBearing,distance);
        return globalCoordinates;
    }

}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值