OpenLayers 3将像素坐标转换为经纬度

3

我刚接触OpenLayers,希望能得到帮助。如何将基于像素的坐标转换为经纬度?我正在使用OL3在静态图像(6494 x 7687 jpg)上查看和绘制要素,使用的投影方式是:

  var projection = new ol.proj.Projection({
    code: 'xkcd-image',
    units: 'pixels',
    extent: [0, 0, 6494, 7687]
  });

在多边形绘制结束时,我有以下代码,它能够正常工作:
draw.on('drawend', function (event) {
  var coord = event.feature.getGeometry().getCoordinates();
  console.log("YOU DREW A Polygon with coord="+coord);
});

有没有一种简单的方法将上面基于像素的多边形坐标转换为纬度/经度坐标?我已经有了图像四个角的纬度/经度。

1个回答

3

不要指定自定义像素投影,而是使用将imageExtent设置为您的角落坐标并将其投影设置为'EPSG:4326'的静态图像源进行配置:

new ol.source.ImageStatic({
  // ...
  imageExtent: [minLon, minLat, maxLon, maxLat],
  projection: 'EPSG:4326'
})

如果您想显示不变形的图像,则必须使用projection: 'EPSG:4326'配置您的视图。这样,您将始终使用地理坐标进行操作。
在官方示例之一中也展示了类似的内容:http://openlayers.org/en/latest/examples/reprojection-image.html。不同之处在于,该示例使用了栅格重投影,因为图像和视图位于不同的投影中。

感谢您的快速回复。这很有道理。我需要存储纬度/经度坐标和像素坐标。现在将纬度/经度坐标转换为像素坐标有多难?再次感谢。 - Morey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接