【发布时间】:2015-03-19 18:33:56
【问题描述】:
我正在尝试使用 SVG 图像在 OpenLayers-3 (OL3) 中创建地图“pin-drops”(即地图标记)。
目前,我使用 PNG 图像作为引用 ol.style.Icon 源(“src”)属性属性的 pindrops 就好了。但是,使用 SVG 图像会失败。有没有其他方法可以以同样的方式使用 SVG?甚至可能通过使用 ol.style.Icon 之外的参考? Open Layers 中已经有很多内置的 SVG,所以这应该是可能的,但我还没有找到一种方法来让它在 OL3 中工作。我应该考虑在 OL3 中执行此操作的其他方法吗?
请注意:我们已经尝试使用 ol.Vector 图层,但是当用户放大/缩小时,SVG 图像的大小会增大/缩小,这是一种不充分的解决方法。
OL3(失败):
var createMapMarkerImage = function() {
return function(feature, resolution) {
var iconStyle = new ol.style.Style({
image: new ol.style.Icon( ({
src: 'img/map_pindrop.svg' // OL3 doesn’t like this, but accepts a .PNG just fine
}))
});
return [iconStyle];
};
};
非常相似的功能,是我在网上找到的以下示例,如果不是因为该示例使用调用 openlayers.js 库的 OpenLayers-2 (OL2) 功能(而不是 OL3 的 ol.js图书馆)。遗憾的是,交换这些 javascript 文件失败了。
OL2(工作 - 但是 旧 OL 库):
http://dev.openlayers.org/sandbox/camptocamp/tipi/examples/vector-symbols.html
在网上搜索解决方案似乎只会让其他困惑的人寻找解决方案。
请帮忙,
免费啤酒
【问题讨论】:
-
仅供参考,SVG 在 OpenLayers 2 中是受支持的渲染器,但在 OpenLayers 3 中不受支持。ol3 中支持的渲染器是:DOM、Canvas 和 WebGL。
标签: svg openlayers openlayers-3