发布
社区首页 >问答首页 >更改图层中单个矢量要素的图标

更改图层中单个矢量要素的图标
EN

Stack Overflow用户
提问于 2012-09-10 23:07:21
回答 1查看 830关注 0票数 0

目前,我正在尝试更改用户关注的矢量层的特定功能的图标。我将每个要素添加到地图中,如下所示:

代码语言:javascript
代码运行次数:0
复制
var point = new OpenLayers.Geometry.Point(pt.lon, pt.lat);
var markerStyle = OpenLayers.Util.extend(OpenLayers.Feature.Vector.style['default'],  {
    externalGraphic: iconURL
});
var marker = new OpenLayers.Feature.Vector(point, attributes, markerStyle);

稍后,我执行以下操作来更新该功能的图标:

代码语言:javascript
代码运行次数:0
复制
var marker = this.findSelectedMarker();
if (marker) {
    marker.style.externalGraphic = newIconUrl;
    this.layer.redraw();             
}

但是,当图层重绘时,图层中的所有要素都使用newIconUrl,而不仅仅是我试图更新的选定标记。

如何更改我的层的一个选中特征的图标?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-11 01:03:18

为了解决这个问题,我需要解决两个问题。第一个问题与使用多个OpenLayers样式有关,无论是在图层级别还是在单个要素级别。我删除了每个单独功能的样式,以便只实现以下图层样式:

代码语言:javascript
代码运行次数:0
复制
this.layerStyle = new OpenLayers.StyleMap({ 
    'default': {
        externalGraphic: media_url + '${iconURL}',
        graphicHeight: 32,
        graphicWidth: 32,
        graphicXOffset: -16,
        graphicYOffset: -32,
        fillOpacity: 0.75
    }
});

我所做的第二个更改是使用属性替换语法来指定具有名为'${iconURL}'的特性属性的图标URL。这使我可以通过简单地更改所选要素的属性并重新绘制图层来更改图标url:

代码语言:javascript
代码运行次数:0
复制
focusedMarker.attributes.iconURL = this.focusedURL;
this.layer.redraw();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12354483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档