美文网首页
Js /Java经纬度墨卡托转换

Js /Java经纬度墨卡托转换

作者: 丶晓虎 | 来源:发表于2019-01-16 14:41 被阅读0次

    一、Js方法
    墨卡托转经度

    function getMercatorLon(x){
      return x/20037508.34*180;
    }
    

    墨卡托转纬度

    function getMercatorLat(y){
      y = y/20037508.34*180;
      return 180/Math.PI*(2*Math.atan(Math.exp(y*Math.PI/180))-Math.PI/2);
    }
    

    经度转墨卡托

    function getMercatorLon(x){
      return x * 20037508.34 / 180;
    }
    

    纬度转墨卡托

    function getMercatorLat(y){
      y = Math.log(Math.tan((90 + y) * Math.PI / 360)) / (Math.PI / 180);;
      return y* 20037508.34 / 180;
    }
    

    二、Java方法

    /**
         * 经度转墨卡托
         * @param x 经度
         * @return 墨卡托经度
         */
        public static double getMercatorLon(double x) {
            try {
                double mx = x * 20037508.34 / 180;
                return mx;
            }
            catch (BaseException e) {
                throw new BaseException(e, LOG);
            }
        }
    
    /**
         * 纬度转墨卡托
         * @param y 纬度
         * @return 墨卡托纬度
         */
        public static double getMercatorLat(double y) {
            try {
                double my = Math.log(Math.tan((90 + y) * Math.PI / 360)) / (Math.PI / 180);
                my = my * 20037508.34 / 180;
                return my;
            }
            catch (BaseException e) {
                throw new BaseException(e, LOG);
            }
        }
    
    
    /**
         * 墨卡转托经度
         * @param x 墨卡托经度
         * @return 经度
         */
        public static double getLonMercator(double x) {
            try {
                // double mx = x * 20037508.34 / 180;
                double mx = x / 20037508.34 * 180;
                return mx;
            }
            catch (BaseException e) {
                throw new BaseException(e, LOG);
            }
        }
    
    
    /**
         * 墨卡托转纬度
         * @param y 墨卡托纬度
         * @return 纬度
         */
        public static double getLatMercator(double y) {
            try {
                double my = y / 20037508.34 * 180;
                my = 180 / Math.PI * (2 * Math.atan(Math.exp(y * Math.PI / 180)) - Math.PI / 2);
                // double my = Math.log(Math.tan((90 + y) * Math.PI / 360)) / (Math.PI / 180);
                // my = my * 20037508.34 / 180;
                return my;
            }
            catch (BaseException e) {
                throw new BaseException(e, LOG);
            }
        }
    

    相关文章

      网友评论

          本文标题:Js /Java经纬度墨卡托转换

          本文链接:https://www.haomeiwen.com/subject/ljdmdqtx.html