ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

openlayer-ol3中坐标系转换

2022-06-15 10:02:25  阅读:134  来源: 互联网

标签:map openlayer EPSG 4326 ol3 坐标 new 坐标系 Math


OSM:转换在球墨卡托投影坐标关系“EPSG:900913”到“EPSG:4326”坐标
 

openlayers openstreetmap coordinate-transformation epsg
我的地图上一层(从实例):
var lonLat = new OpenLayers.LonLat(40.4088576, -86.8576718)
    .transform(
     new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984
     map.getProjectionObject() // to Spherical Mercator Projection
    );

在位移结束我的get中心坐标:
map.getCenter();
map.getZoom();

和缩放级别:4925535.4503328,-9668990.0134335,12 使用算法
public PointF TileToWorldPos(double tile_x, double tile_y, int zoom) 
{
 PointF p = new Point();
 double n = Math.PI - ((2.0 * Math.PI * tile_y) / Math.Pow(2.0, zoom));
 p.X = (float)((tile_x / Math.Pow(2.0, zoom) * 360.0) - 180.0);
 p.Y = (float)(180.0 / Math.PI * Math.Atan(Math.Sinh(n)));
 return p;
}

我取得Y〜90和X〜432662 但我需要在border坐标:-180 .. 180 像:40.4088576,-86.8576718 什么是错?

------------------------------------------------------------------------------------------------------------------------- 
1. 为什么不干脆让OpenLayers项目回来的吗?所以,如果你想要的中心点为WGS84然后就去做:
var center = map.getCenter().transform(map.getProjectionObject(),
          new OpenLayers.Projection("EPSG:4326"));

我想你会发现,会做你想要什么,无论如何,至少如果我理解正确的问题... 顺便说一句,EPSG:4326是你似乎在寻找自然的WGS84纬度/经度值-大型数字投影的坐标是EPSG:900913。
本文标题 :OSM:转换在球墨卡托投影坐标关系“EPSG:900913”到“EPSG:4326”坐标

 

标签:map,openlayer,EPSG,4326,ol3,坐标,new,坐标系,Math
来源: https://www.cnblogs.com/devgis/p/16377282.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有