首页 / 浏览问题 / 云GIS / 问题详情
使用SuperMap.Layer.Graphics如何自定义图标?
12EXP 2020年01月09日

参考例子里的方法去加载图片 使用SuperMap.Layer.Graphics调用会报Uncaught TypeError: Failed to execute 'drawImage' on 'CanvasRenderingContext2D': The provided value is not of type '(CSSImageValue or HTMLImageElement or SVGImageElement or HTMLVideoElement or HTMLCanvasElement or ImageBitmap or OffscreenCanvas)'

graphicLayer = new SuperMap.Layer.Graphics("Graphic Layer", null, {hitDetection: true, useCanvasEvent: false});
var selectGraphic = new SuperMap.Control.SelectGraphic(graphicLayer, {
								            onSelect: showPopup,
								            hover: false
								     });
var points = []; 
var image = [];
var img = new Image();
img.src =obj.exhibitDatas[5].iconUrl;
img.onload = function () {
image.push(L.supermap.imageStyle({
img: img,
anchor: [16, 16]
}));
for(var i = 0; i<obj.exhibitDatas.length; i++){
var point= new SuperMap.Geometry.Point(obj.exhibitDatas[i].longitude, obj.exhibitDatas[i].latitude);
var pointVector = new SuperMap.Graphic(point);
pointVector.style={
image: image[0].getStyle()
};
 pointVector.scope=obj.exhibitDatas[i];
points.push(pointVector)
}
graphicLayer.addGraphics(points);
map.addLayers([markerLayer, graphicLayer]);
map.addControl(selectGraphic);
selectGraphic.activate();
}

1个回答

您好,您的icon资源地址是否正确?您可以试一下在官网的范例中替换这个icon的资源测试一下是否是icon资源地址的问题导致的这个现象
5,668EXP 2020年01月09日
地址是正确的
通过调试发现this.canvas.drawImage(a.image.canvas,g,d);a.image.canvas为undefined 请问一下这个canvas是一个什么值?

您这个是在官网的范例中调用这个icon的url地址出现的信息么?如果不是的话您可以在官网的范例上替换一下icon符号的url然后截取一下浏览器是否存在报错信息。

https://iclient.supermap.io/examples/leaflet/editor.html#12_graphicLayerImage

在范例里没有出现这个问题
如果官网是正常的话建议对比官网的功能实现过程检查一下代码结构,看一下是否有对象未被初始化或者初始化顺序有问题的情况。或者您可以尝试在官网的范例中重现问题然后把问题代码发给我来检查一下。

我发现例子里有一句

  widgets.alert.clearAlert();

请问一下这个是什么意思?是不是和这个有关

图标显示不了的问题解决了,引用js有问题.但是有一个问题想请教一下 每张图只能渲染一种图标吗
...