| | |
| | | package com.panzhihua.service_community.util; |
| | | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | |
| | | * @Date: 2022/11/11 15:21 |
| | | * @Description: 经纬度处理 |
| | | */ |
| | | @Slf4j |
| | | public class MapDistance { |
| | | private static double EARTH_RADIUS = 6378.137; |
| | | |
| | |
| | | * 最大经度 maxLng |
| | | * 最大纬度 minLat |
| | | */ |
| | | public static Map<Object,Object> getAround(String latStr, String lngStr, String raidus) { |
| | | public static Map<Object,Object> getAround(String latStr, String lngStr, double raidusMile) { |
| | | log.info("latStr:"+latStr+",lngStr:"+lngStr+",raidusMile:"+raidusMile); |
| | | Map<Object,Object> map = new HashMap<Object,Object>(); |
| | | |
| | | Double latitude = Double.parseDouble(latStr);// 传值给经度 |
| | | Double longitude = Double.parseDouble(lngStr);// 传值给纬度 |
| | | |
| | | Double degree = (24901 * 1609) / 360.0; // 获取每度 |
| | | double raidusMile = Double.parseDouble(raidus); |
| | | // double raidusMile = Double.parseDouble(raidus); |
| | | |
| | | Double mpdLng = Double.parseDouble((degree * Math.cos(latitude * (Math.PI / 180))+"").replace("-", "")); |
| | | Double dpmLng = 1 / mpdLng; |
| | |
| | | System.out.println(getDistance("30.57568","103.962128","30.636726","103.957232")); |
| | | |
| | | //103.842654,30.560987 |
| | | System.out.println(getAround("103.842654", "30.560987", "5000")); |
| | | System.out.println(getAround("107.075277", "30.456085", 5000d)); |
| | | //117.01028712333508(Double), 117.22593287666493(Double), |
| | | //36.44829619896034(Double), 36.92138380103966(Double) |
| | | |
| | | //104.03035080138962(String), 104.12020319861038(String), 30.271352899925574(String), 30.64081710007443(String) |
| | | distanceOfTwoPoints("30.57568","103.962128","30.636726","103.957232"); |
| | | } |
| | | |