JAVA 根据经纬度算出附近的正方形的四个角的经纬度详解编程语言

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

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论