![](/img/trans.png)
[英]mapbox gl js: use intermediate rendering step as mask for custom layer
[英]Use svg image as map layer for mapbox GL JS
如何使用 SVG 图像作为 mapbox GL JS 的底图?
我知道,OpenLayers 和 Leaflet 为开发人员提供了这样的机会。
传单:
var svgUrl = 'image.svg',
imageBounds = [[0, 0], [100, 100]];
L.imageOverlay(svgUrl , imageBounds).addTo(map);
开放层:
var svgUrl = 'image.svg',
var imgLayer = new ImageLayer({
source: new Static({
url: svgUrl,
projection: projection,
imageExtent: extent,
imageLoadFunction: function (image, src) {
image.getImage().src = src;
image.getImage().width = olExtent.getWidth(extent);
image.getImage().height = olExtent.getHeight(extent);
},
}),
});
map.addLayer(imgLayer);
AFAIK, mapbox GL JS也可以处理图像叠加:
var svgUrl = 'image.svg',
this.map.addSource("myImageSource", {
type: "image",
url: svgUrl,
coordinates: [
[-80.425, 46.437],
[-71.516, 46.437],
[-71.516, 37.936],
[-80.425, 37.936],
],
});
map.addLayer({
id: "overlay",
source: "myImageSource",
type: "raster",
paint: { "raster-opacity": 0.85 },
});
但! 如果我尝试加载 svg,则会收到此错误:
错误:无法加载图像,因为无法解码源图像。请确保使用支持的图像类型,例如 PNG 或 JPEG。 请注意,不支持 SVG。
那么,任何想法如何处理这个问题?
据我所知,Mapbox-gl-js 不支持将 SVG 添加为图层( Github Link ),您必须使用外部库/工具(如 D3 和可能的重复链接)来做一些解决方法,以及它抛出错误的原因是因为SVG 有像素坐标,gl-js 处理地理坐标(Lat/Lng)
有用的网址:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.