【问题标题】:Openlayers 3 export map to png image sizeOpenlayers 3 将地图导出为 png 图像大小
【发布时间】:2016-04-22 22:14:07
【问题描述】:

我正在尝试将 openlayers 3 地图导出为 PNG。

这个例子运行良好 http://openlayers.org/en/master/examples/export-map.html ,但是导出图像的宽度和高度是原始地图画布的两倍。

如果地图画布为 1330x440,我将导出的 png 图像设为 2660x880 像素。

知道如何使导出大小与画布大小相同吗?

【问题讨论】:

  • 您使用的是配备 Retina 显示屏的 Mac 吗?
  • 您的问题有什么遗漏吗?

标签: openlayers-3


【解决方案1】:

这是因为您的设备像素比为 2,因为您有一个 HiDPI (Retina) 显示屏。

您可以使用{pixelRatio: 1} 配置地图并获得模糊地图,或者在ol.has.DEVICE_PIXEL_RATIO 不等于1 时缩放导出的图像:

map.once('postcompose', function(event) {
  var dataURL;
  var canvas = event.context.canvas;
  if (ol.has.DEVICE_PIXEL_RATIO == 1) {
    dataURL = canvas.toDataURL('image/png');
  } else {
    var targetCanvas = document.createElement('canvas');
    var size = map.getSize();
    targetCanvas.width = size[0];
    targetCanvas.height = size[1];
    targetCanvas.getContext('2d').drawImage(canvas,
        0, 0, canvas.width, canvas.height,
        0, 0, targetCanvas.width, targetCanvas.height);
    dataURL = targetCanvas.toDataURL('image/png');
  }
});
map.renderSync();

【讨论】:

  • 缩放后的图像能否得到相同质量的图像?
  • 你必须选择 - 要么获得双倍的尺寸和相同的质量,要么获得相同的尺寸和更低的质量。
  • Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.... 为什么? (Chrome、Tomcat7 和 Java 应用程序)
  • 如何制作它总是以视网膜分辨率(pixelRatio:2)导出它
猜你喜欢
  • 2017-06-07
  • 2019-05-03
  • 1970-01-01
  • 1970-01-01
  • 2021-12-30
  • 2022-01-01
  • 2020-03-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多