openlayers 墨卡托与经纬度坐标转化

前台方式

第一种方式:

1 var proj = new OpenLayers.Projection("EPSG:4326");
2 var point = new OpenLayers.LonLat(-68, 42);
3 point.transform(proj, map.getProjectionObject());

第二种方式,通过替换坐标坐标进行实现

var point = new OpenLayers.Bounds(-68, 40, -88, 52)
point .transform(proj, map.getProjectionObject());

转化后,定义地图坐标中心点位置使用setCenter方法

map.setCenter(point,4);//参数(转化后的坐标,地图显示层级)

 后台

        //经纬度转墨卡托
      public Vector2D lonLat2Mercator(Vector2D lonLat)
        {
            Vector2D mercator = new Vector2D();
            double x = lonLat.X * 20037508.34 / 180;
            double y = Math.Log(Math.Tan((90 + lonLat.Y) * Math.PI / 360)) / (Math.PI / 180);
            y = y * 20037508.34 / 180;
            mercator.X = x;
            mercator.Y = y;
            return mercator;
        }
        //墨卡托转经纬度
        public Vector2D Mercator2lonLat(Vector2D mercator)
        {
            Vector2D lonLat = new Vector2D();
            double x = mercator.X / 20037508.34 * 180;
            double y = mercator.Y / 20037508.34 * 180;
            y = 180 / Math.PI * (2 * Math.Atan(Math.Exp(y * Math.PI / 180)) - Math.PI / 2);
            lonLat.X = x;
            lonLat.Y = y;
            return lonLat;
        }

  

转载于:https://www.cnblogs.com/hjxh/p/4346529.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值