/** * * @param longitude 经度 * @param latitude 纬度 * @param distance 范围(米) * @return */ public static Map<String, double[]> returnLLSquarePoint(double longitude, double latitude, double distance) { Map<String, double[]> squareMap = new HashMap<String, double[]>(); // 计算经度弧度,从弧度转换为角度 double dLongitude = 2 * (Math.asin(Math.sin(distance / (2 * 6378137)) / Math.cos(Math.toRadians(latitude)))); dLongitude = Math.toDegrees(dLongitude); // 计算纬度角度 double dLatitude = distance / 6378137; dLatitude = Math.toDegrees(dLatitude); // 正方形 double[] leftTopPoint = { latitude + dLatitude, longitude - dLongitude }; double[] rightTopPoint = { latitude + dLatitude, longitude + dLongitude }; double[] leftBottomPoint = { latitude - dLatitude, longitude - dLongitude }; double[] rightBottomPoint = { latitude - dLatitude, longitude + dLongitude }; squareMap.put("leftTopPoint", leftTopPoint); squareMap.put("rightTopPoint", rightTopPoint); squareMap.put("leftBottomPoint", leftBottomPoint); squareMap.put("rightBottomPoint", rightBottomPoint); System.out.println("leftTop:"+leftTopPoint[0]+"======"+leftTopPoint[1]); System.out.println("rightTop:"+rightTopPoint[0]+"======"+rightTopPoint[1]); System.out.println("leftBottom:"+leftBottomPoint[0]+"======"+leftBottomPoint[1]); System.out.println("rightBottom:"+rightBottomPoint[0]+"======"+rightBottomPoint[1]); return squareMap; }
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/19484.html