我正在尝试使用 SVG 图像在 OpenLayers-3 (OL3) 中创建地图“针滴”(即地图标记)。
目前,我使用 PNG 图像作为引用 ol.style.Icon 源(“src”)属性的 pindrop,效果很好。但是,使用 SVG 图像时会失败。还有其他方法可以以相同的方式使用 SVG 吗?也许甚至可以使用 ol.style.Icon 之外的参考? Open Layers 中已经有很多内置的 SVG,所以这个should有可能,但我还没有找到在 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 库(而不是 OL3 的 ol.js 库)的 OpenLayers-2 (OL2) 功能,那么它几乎是完美的。遗憾的是,交换这些 javascript 文件失败了。
OL2(有效 - 但是oldOL库):
http://dev.openlayers.org/sandbox/camptocamp/tipi/examples/vector-symbols.html
在线搜索此问题的解决方案似乎只会导致其他困惑的人寻找解决方案。
请帮忙,
FreeBeer
根据 @ahocevar 的回答,您可以使用 SVG 的数据 URI:
new ol.style.Style({
image: new ol.style.Icon({
anchor: [0, 0],
src: 'data:image/svg+xml;utf8,<svg>/* SVG DATA */</svg>'
})
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)