marker如何实施更换图标?

0 投票
我设置marker.icon为新的icon,但是换了之后地图放大缩小后这个图标才会改变,而且旧的图标似乎就固定在屏幕上了
4月 1, 2017 分类:  439次浏览 | 用户: windDawn 初出茅庐 (58 分)

1个回答

0 投票
您好!您可以把您的代码回复至下方吗?我们好进行进一步分析。
4月 1, 2017 用户: 程yan 名扬四海 (1,650 分)
想实现的功能是,地图上一个摄像头的图标,当点击弹出popup,对应的图标换成一个闪光的gif的图标,popup关闭后恢复之前静态的图标,其中创建marker的时候,将图标地址当做属性付给marker了

    var size = new SuperMap.Size(15.15, 23);
    var offset = new SuperMap.Pixel(-(size.w / 2), -(size.h / 2));
    var icon = new SuperMap.Icon(vedioMarker.flash_image, size, offset);
    vedioMarker.icon = icon;
您好!会出现您现在的状况可能出现的问题:

1.替换图标的时候没有先用clearMakers()的方法将原图标maker图标图层上的图标清除

2.您的gif图文件较大,导致加载至浏览器时反应较慢

如果您还需要进一步支持,请在下方回复更详尽的代码,我好进一步的分析。
没有清除,我只需要将当前点击的那个换图标啊
marker.setUrl(url)api文档中为什么没这个方法??这个方法直接能替换那个marker的图标
如果您还是有问题的话,可以试着把marker转换成feature,feature类同时具有 marker 和 lonlat 属性。
这个setUrl()方法就可以,关键是你们文档为什么没有这个
不好意思,我们的iserver产品目前有些接口还没开发出来,给您带来的不便敬请谅解。

如果您想进行扩展,目前js客户端已经开源,可以参考https://github.com/SuperMap/iClient-for-JavaScript 地址。

marker对象的setUrl()这个方式是可以使用的,客户端有部分内部方法没有开放出来,后期我们会完善文档的。另外,如果你要使用覆盖物,建议你还可以使用VectorLayer的矢量要素feature,VectorLayer在性能和体验上都要比MarkerLayer要好很多,可以参考相关的API和范例。http://support.supermap.com.cn:8090/iserver/iClient/forJavaScript/examples/examples.html#vectorEvent

...