/** * * @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; }