先上一个demo

package demo;
import java.util.HashMap;
import java.util.Map;/*** 用于计算多个经纬度内的中心点*/
public class randomGetDown {/***  根据输入的地点坐标计算中心点* @param geoCoordinateList* @return*/public static Map<String,Double> getCenterPoint(String str) {String[] arr = str.split(";");int total = arr.length;double X = 0, Y = 0, Z = 0;for(int i=0;i<arr.length;i++){double lat, lon, x, y, z;lon = Double.parseDouble(arr[i].split(",")[0]) * Math.PI / 180;lat = Double.parseDouble(arr[i].split(",")[1]) * Math.PI / 180;x = Math.cos(lat) * Math.cos(lon);y = Math.cos(lat) * Math.sin(lon);z = Math.sin(lat);X += x;Y += y;Z += z;}X = X / total;Y = Y / total;Z = Z / total;double Lon = Math.atan2(Y, X);double Hyp = Math.sqrt(X * X + Y * Y);double Lat = Math.atan2(Z, Hyp);Map<String,Double> map = new HashMap<String,Double>();map.put("lng", Lon * 180 / Math.PI);map.put("lat", Lat * 180 / Math.PI);return map;}public static void main(String[] args) {String lng_lat = "118.778076,30.905645;118.780764,30.914549;118.782928,30.9186;118.785621,30.92202;118.790005,30.919169;118.790796,30.917311;118.791029,"+ "30.915204;118.791137,30.914693;118.790436,30.905754;118.790005,30.904762;118.786663,30.901354;118.781543,30.903151;"; Map <String,Double>  map = getCenterPoint(lng_lat);System.out.println(map.get("lng") +","+ map.get("lat"));//30.589848801178064,118.65923827037791}}

根据多个经纬度算出这个区域最中心的点

package lngLatDdemo;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;/*** 用于计算多个经纬度内的中心点*/
public class GetCenterPointFromListOfCoordinates {/***  根据输入的地点坐标计算中心点* @param geoCoordinateList* @return*/public static Map<String,Double> getCenterPoint(List<GeoCoordinate> geoCoordinateList) {int total = geoCoordinateList.size();double X = 0, Y = 0, Z = 0;for (GeoCoordinate g : geoCoordinateList) {double lat, lon, x, y, z;lat = g.getLatitude() * Math.PI / 180;lon = g.getLongitude() * Math.PI / 180;x = Math.cos(lat) * Math.cos(lon);y = Math.cos(lat) * Math.sin(lon);z = Math.sin(lat);X += x;Y += y;Z += z;}X = X / total;Y = Y / total;Z = Z / total;double Lon = Math.atan2(Y, X);double Hyp = Math.sqrt(X * X + Y * Y);double Lat = Math.atan2(Z, Hyp);Map<String,Double> map = new HashMap<String,Double>();map.put("lng", Lon * 180 / Math.PI);map.put("lat", Lat * 180 / Math.PI);return map;}/*** 根据输入的地点坐标计算中心点(适用于400km以下的场合)* @param geoCoordinateList* @return*/public static Map<String,Double> getCenterPoint400(List<GeoCoordinate> geoCoordinateList) {// 以下为简化方法(400km以内)int total = geoCoordinateList.size();double lat = 0, lon = 0;for (GeoCoordinate g : geoCoordinateList) {lat += g.getLatitude() * Math.PI / 180;lon += g.getLongitude() * Math.PI / 180;}lat /= total;lon /= total;Map<String,Double> map = new HashMap<String,Double>();map.put("lng", lon * 180 / Math.PI);map.put("lat", lat * 180 / Math.PI);return map;}public static void main(String[] args) {List<GeoCoordinate> geoCoordinateList = new ArrayList<GeoCoordinate>();GeoCoordinate g1 = new GeoCoordinate();//31.245893,118.846010g1.setLongitude(118.846010);g1.setLatitude(31.245893);geoCoordinateList.add(g1);GeoCoordinate g2 = new GeoCoordinate();//31.326869,119.180899g2.setLongitude(119.180899);g2.setLatitude(31.326869);geoCoordinateList.add(g2);GeoCoordinate g3 = new GeoCoordinate();//31.292315,119.426963g3.setLongitude(119.426963);g3.setLatitude(31.292315);geoCoordinateList.add(g3);GeoCoordinate g4 = new GeoCoordinate();//31.086699,119.721966g4.setLongitude(119.721966);g4.setLatitude(31.086699);geoCoordinateList.add(g4);GeoCoordinate g5 = new GeoCoordinate();//30.608496,119.480609g5.setLongitude(119.480609);g5.setLatitude(30.608496);geoCoordinateList.add(g5);GeoCoordinate g6 = new GeoCoordinate();//30.638329,119.388623g6.setLongitude(119.388623);g6.setLatitude(30.638329);geoCoordinateList.add(g6);GeoCoordinate g7 = new GeoCoordinate();//30.542828,119.296636g7.setLongitude(119.296636);g7.setLatitude(30.542828);geoCoordinateList.add(g7);GeoCoordinate g8 = new GeoCoordinate();//30.538847,119.361027g8.setLongitude(119.361027);g8.setLatitude(30.538847);geoCoordinateList.add(g8);GeoCoordinate g9 = new GeoCoordinate();//30.359519,119.439215g9.setLongitude(119.439215);g9.setLatitude(30.359519);geoCoordinateList.add(g9);GeoCoordinate g10 = new GeoCoordinate();//30.240531,119.068970g10.setLongitude(119.068970);g10.setLatitude(30.240531);geoCoordinateList.add(g10);GeoCoordinate g11 = new GeoCoordinate();//29.784193,118.848202g11.setLongitude(118.848202);g11.setLatitude(29.784193);geoCoordinateList.add(g11);GeoCoordinate g12 = new GeoCoordinate();//29.831577,118.549246g12.setLongitude(118.549246);g12.setLatitude(29.831577);geoCoordinateList.add(g12);GeoCoordinate g13 = new GeoCoordinate();//29.917260,118.303182g13.setLongitude(118.303182);g13.setLatitude(29.917260);geoCoordinateList.add(g13);GeoCoordinate g14 = new GeoCoordinate();//30.345059,117.930637g14.setLongitude(117.930637);g14.setLatitude(30.345059);geoCoordinateList.add(g14);GeoCoordinate g15 = new GeoCoordinate();//30.671136,117.907748g15.setLongitude(117.907748);g15.setLatitude(30.671136);geoCoordinateList.add(g15);GeoCoordinate g16 = new GeoCoordinate();//31.256266,118.563044g16.setLongitude(118.563044);g16.setLatitude(31.256266);geoCoordinateList.add(g16);GeoCoordinate g17 = new GeoCoordinate();//31.360917,118.742418g17.setLongitude(118.742418);g17.setLatitude(31.360917);geoCoordinateList.add(g17);Map <String,Double>  map = GetCenterPointFromListOfCoordinates.getCenterPoint(geoCoordinateList);System.out.println(map.get("lat") +","+ map.get("lng"));//30.589848801178064,118.65923827037791}}/*** 封装经纬度坐标类* Created by fc.w on 2017/12/8.*/
class GeoCoordinate {private double latitude;private double longitude;public GeoCoordinate() {}public GeoCoordinate(double latitude, double longitude) {this.latitude = latitude;this.longitude = longitude;}public double getLatitude() {return latitude;}public void setLatitude(double latitude) {this.latitude = latitude;}public double getLongitude() {return longitude;}public void setLongitude(double longitude) {this.longitude = longitude;}
}

java根据经纬度得出中心点的经纬度相关推荐

  1. JavaScript 根据经纬度得出中心点的经纬度

    JavaScript 根据经纬度得出中心点的经纬度 /*** 地点坐标计算中心点* @param geoCoordinateList {Array<Array<Object>> ...

  2. 【Java、Redis】通过中心经纬度与半径获取范围内的结果集(类似附近的人)

    文章目录 需求 解决方案 什么是Redis + GeoHash 1.Java + Redis实现 引用的pom依赖 InitEquLongLatTask.java Controller Service ...

  3. 高德地图获取当前屏幕中心点的经纬度

    公司有个需求就是要随着屏幕的改变而加载附近的商户信息. 那么高德地图获取当前屏幕中心点的经纬度呢? 核心方法:aMap.setOnCameraChangeListener(this); 实现接口: @ ...

  4. arcgis获取某个区域中心点的经纬度

    最近记忆力不是很好,记录一下,省的用时再去查 提示:以下是本篇文章正文内容,下面案例可供参考 一.我的需求是使用arcgis提取某个区域中心点的经纬度,且原始数据为栅格数据 二.操作步骤 1.首先在a ...

  5. 根据经纬度确定行政区域_java,经纬度转换行政区域

    第 1 页 共 11 页 竭诚为您提供优质文档 / 双击可除 java, 经纬度转换行政区域 篇一: geohash 算法经纬度转换 geohash 算法经纬度转换 geohash 在查找周围朋友, ...

  6. cesium 经纬度绘制点_Cesium经纬度与坐标的问题

    ##数据预处理 1. 源数据坐标系通常为二维平面坐标系,通过设置投影坐标(通常为高斯克吕格投影,按实际位置选择正确分带)使其可进行后续操作. 2. 投影坐标是实际位置在平面上投影后的坐标,获得其正确位 ...

  7. 微信小程序、uni-app获取经纬度,并将经纬度转化为确定的位置信息

    目录 一)小程序获得经纬度 二)将经纬度转化为位置信息 三)uni-app版书写: 一)小程序获得经纬度   调用wx.getLocation()方法,经纬度直接存在success回调函数的latit ...

  8. 大批量其他经纬度转换为百度地图经纬度

    大批量其他经纬度转换为百度地图经纬度 <!DOCTYPE html> <html><head><script src="./jquery-3.4.1 ...

  9. 腾讯地图api php经纬度转换地址,腾讯地图经纬度转换为百度地图经纬度

    ‍ 利用微信来获取用户当前的详细地址是非常方便的,但是利用微信获取到用户的经纬度转换为具体地址时,老是出现误差很大,因此,决心把腾讯地图经纬度转换城百度地图经纬度,然后再‍利用百度地图api来获取详细 ...

  10. 经纬度(wgs)并且根据经纬度获取城市

    var obj={}; // 根据经纬度(wgs)并且根据经纬度获取城市(h5plus)getWarpweft(){uni.getLocation({type: 'wgs84',success: fu ...

最新文章

  1. 【每日一英语】“baker's dozen”是“十几”呢?
  2. python中国地图热力图是什么意思_python实现输入的数据在地图上生成热力图效果...
  3. 将论文中的所有参考文献编号批量上标化
  4. 超融合架构下的数据中心
  5. linux中oracle静默安装失败,oracle 11 Linux 静默安装 步骤及错误解决(更新中)
  6. 【HAOI2018】染色【反向二项式反演】【NTT卷积】
  7. web前端基础知识:html布局如何应用?
  8. 在构造函数中使用new时应注意的事项
  9. 驰骋工作流引擎-总体介绍
  10. iOS 各种坐标系对比
  11. 英语语法回顾2——并列句
  12. java何时new_何时使用lambda,何时使用Proc.new?
  13. 随便输入两个单词,两个单词之间以空格隔开,输出时每个单词的首字母变为大写。如输入:“hello java”,输出为“Hello Java”
  14. 阿里巴巴“奇幻”上市之旅惨遭红灯
  15. [深度学习] CCPD车牌数据集介绍
  16. matlab 全自动汉诺塔
  17. SQL server 2005安装问题汇总(转)
  18. 【琐琐碎碎小知识】Keil5软件 文件符号上带一个黄色的钥匙
  19. 换热站远程监控系统方案
  20. matlab 以竖线 分隔,用哪个字符作为标题中的分隔竖线

热门文章

  1. java 水晶按钮_水晶按钮制作 jsp function调用java方法
  2. Python中对if __name__=='__main__:的理解
  3. win7用友u8安装教程_如何在win7系统中安装用友u8(图文)
  4. qt 元对象 和moc原理
  5. 学习新方法:帅到没朋友
  6. 医保卡不用填写也可以报销的医院(A类定点医疗机构)
  7. 在div的左上角添加三角形,文字45度倾斜显示
  8. 为微信小程序扩展自定义babel编译功能
  9. MHL中的packedpixel概念
  10. Qt 之显示网络图片