Chinaunix首页 | 论坛 | 博客
  • 博客访问: 545507
  • 博文数量: 298
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 3077
  • 用 户 组: 普通用户
  • 注册时间: 2019-06-17 10:57
文章分类

全部博文(298)

文章存档

2022年(96)

2021年(201)

2019年(1)

我的朋友

分类: Java

2021-10-08 12:10:34


点击(此处)折叠或打开


  1. package com.fh.util;

  2. /**
  3.  * 说明:圆周
  4.  * 作者:FH Admin
  5.  * from:fhadmin.cn
  6.  */
  7. public class LatLonUtil {

  8.     private static final double PI = 3.14159265; // 圆周率
  9.     private static final double EARTH_RADIUS = 6378137; // 地球半径
  10.     private static final double RAD = Math.PI / 180.0; // 一百八十度角

  11.     /**
  12.      * @param raidus
  13.      * 单位米 return minLat
  14.      * 最小经度 minLng
  15.      * 最小纬度 maxLat
  16.      * 最大经度 maxLng
  17.      * 最大纬度 minLat
  18.      */
  19.     public static double[] getAround(double lat, double lon, int raidus) {

  20.         Double latitude = lat;// 传值给经度
  21.         Double longitude = lon;// 传值给纬度
  22.         Double degree = (24901 * 1609) / 360.0; // 获取每度
  23.         double raidusMile = raidus;
  24.         Double dpmLat = 1 / degree;
  25.         Double radiusLat = dpmLat * raidusMile;
  26.         // 获取最小纬度
  27.         Double minLat = latitude - radiusLat;
  28.         // 获取最大纬度
  29.         Double maxLat = latitude + radiusLat;
  30.         Double mpdLng = degree * Math.cos(latitude * (PI / 180));
  31.         Double dpmLng = 1 / mpdLng;
  32.         Double radiusLng = dpmLng * raidusMile;
  33.         //获取最小经度
  34.         Double minLng = longitude - radiusLng;
  35.         // 获取最大经度
  36.         Double maxLng = longitude + radiusLng;
  37.         System.out.println("jingdu" + minLat + "weidu" + minLng + "zuidajingdu"
  38.                 + maxLat + "zuidaweidu" + maxLng);

  39.         return new double[] { minLat, minLng, maxLat, maxLng };
  40.     }
  41.     //测试方法
  42.     public static void main(String [] src){
  43.         getAround(36.68027, 117.12744, 1000);
  44.     }

  45. }


阅读(653) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~