【发布时间】:2015-12-22 12:55:33
【问题描述】:
如何通过 OpenLayers-3 将 SVG 图像用作图层(而不是地图标记)
在使用任何 ol.source.Vector 和 ol.format.Feature 实例时,我无法获得 SVG 图像的任何输出。
小例子:
var mapLayer = new ol.layer.Vector({
source: new ol.source.Vector({
url: 'image.svg',
format: new ol.format.Feature() // http://openlayers.org/en/v3.12.1/apidoc/ol.format.Feature.html
}),
});
我在使用 ImageStatic 层时能够获得输出,但这使用/生成(?)静态图像,因此 SVG 的优势消失了。
例子:
// Not sure if I need this for SVG, but is is required for an image
var extent = [0, 0, 1000, 1000]; // random image size
var projection = new ol.proj.Projection({
code: 'test',
units: 'pixels',
extent: extent
});
var mapLayer = new ol.layer.Image({
source: new ol.source.ImageStatic({
url: 'image.svg',
projection: projection,
imageExtent: extent
})
});
我已经尝试过将Content-type: 设置为image/svg+xml 的技巧,但这对我没有任何帮助。
所以,再说一遍: 我如何(如果可能)使用 SVG 图像作为 OpenLayers-3 的图层?
【问题讨论】:
-
我很好奇,除了作为静态图像之外,您还想如何利用 SVG 的优势?
-
好吧,根据我的想法(如果我错了,请纠正我)我应该能够添加一个“可缩放”的 SVG 图层,这样即使你放大图像也不会像素化并且保持锋利。我们倾向于将它用于平面图,因此 SVG(或者可能是其他矢量格式)会很棒。当然,静态图像仍然是可能的,但是当您放大时,它总是会变得模糊。
-
我自己仍在了解 OL3,并且一直对 SVG 感到疑惑。我还需要在基础层上绘制类似 CAD 的矢量绘图,并且从我读过的 cmets 中可能还不支持 SVG?但是您绝对可以使用 Point、LineString 和 Polygon 类型来制作可缩放图层。我要试试ogr2ogr to translate DXF to GeoJSON.
-
是的,这是我的问题。我不知道它是否受支持(我在网站上没有看到任何关于它的信息,所以我的猜测是否定的)。只是 SVG 是一种如此常用的格式,我以为我只是错过了一些东西。也许我需要在 GitHub 页面上问这个问题,因为这里似乎没有回答。谢谢你的链接,我也会调查一下。
-
哦,顺便说一句,我注意到 SVG 图标是可能的,所以也许我们可以使用一个巨大的图标 :) stackoverflow.com/questions/29152405/…