javascript - OpenLayers 将几何图形渲染到 Canvas
问题描述
我看到了“将几何图形渲染到画布”的示例:
var canvas = document.getElementById('canvas');
var vectorContext = ol.render.toContext(canvas.getContext('2d'), {size: [100, 100]});
var fill = new ol.style.Fill({color: 'blue'});
var stroke = new ol.style.Stroke({color: 'black'});
var style = new ol.style.Style({
fill: fill,
stroke: stroke,
image: new ol.style.Circle({
radius: 10,
fill: fill,
stroke: stroke
})
});
vectorContext.setStyle(style);
vectorContext.drawGeometry(new ol.geom.LineString([[10, 10], [90, 90]]));
vectorContext.drawGeometry(new ol.geom.Polygon([[[2, 2], [98, 2], [2, 98], [2, 2]]]));
vectorContext.drawGeometry(new ol.geom.Point([88, 88]));
但是如何处理投影 EPSG:4326(或 EPSG:3857)中的几何图形呢?
PS 我看到了问题“我们如何使用样式而不使用地图将 OpenLayers 3 功能渲染到画布”,但我不明白代码适用于什么投影。并澄清作者不允许我在stackoverflow上的低声誉。
解决方案
HTML画布元素用于通过 JavaScript 动态绘制图形。如果您在画布上的绘图不再有投影,则您处于像素坐标中。您必须以像素为单位转换几何图形。
getPixelFromCoordinate
如果您在地图画布中绘图,请查看地图的功能。
推荐阅读
- machine-learning - “normalize”和“Normalizer”之间的特征缩放差异
- java - 比较 Java 列表向量
- python - Pandas Grouping - 组内组的行数
- amazon-web-services - 不使用主键的 AppSync 解析器查询表/二级索引
- asterisk - 我想解决在 Asterisk sip 服务器上发生的错误
- linux - 使用 Perl 获取命令输入
- vba - 发生错误事件时,停止 Outlook VBA 在 ItemSend() 中发送邮件
- php - 如何将文本添加到图像动态内容
- c - 将一定数量的字节添加到 C 中的 void 指针
- c++ - c++错误:传递'const std::vector
' 作为 'this' 参数丢弃限定符 [-fpermissive]