使用SuperMap.Layer.Graphics如何自定义图标?

0 投票

参考例子里的方法去加载图片 使用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月 9 分类:  145次浏览 | 用户: 440981 才疏学浅 (12 分)

1个回答

0 投票
您好,您的icon资源地址是否正确?您可以试一下在官网的范例中替换这个icon的资源测试一下是否是icon资源地址的问题导致的这个现象
1月 9 用户: 于浩 登峰造极 (5,668 分)
地址是正确的
通过调试发现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有问题.但是有一个问题想请教一下 每张图只能渲染一种图标吗
...