Openlayers OSM:从球面墨卡托投影坐标转换拉杆“;EPSG:900913“;至;EPSG:4326“;协调
我正在使用带有图层的贴图(来自示例): 在moveend上,我得到中心坐标:Openlayers OSM:从球面墨卡托投影坐标转换拉杆“;EPSG:900913“;至;EPSG:4326“;协调,openlayers,openstreetmap,coordinate-transformation,epsg,Openlayers,Openstreetmap,Coordinate Transformation,Epsg,我正在使用带有图层的贴图(来自示例): 在moveend上,我得到中心坐标: 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 - ((
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
但我需要边界的坐标:-180..180
类似于:40.4088576,-86.8576718
怎么了?为什么不让OpenLayers为您重新投影呢?因此,如果您希望中心点为WGS84,则只需执行以下操作:
var center = map.getCenter().transform(map.getProjectionObject(),
new OpenLayers.Projection("EPSG:4326"));
我想你会发现,不管怎样,这都能满足你的需求,至少如果我正确理解这个问题的话
顺便说一下,EPSG:4326是您似乎正在寻找的自然WGS84 lat/lon值-大的数字是球面墨卡托投影坐标,即EPSG:900913
var center = map.getCenter().transform(map.getProjectionObject(),
new OpenLayers.Projection("EPSG:4326"));