目前,我正在尝试更改用户关注的矢量层的特定功能的图标。我将每个要素添加到地图中,如下所示:
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);
稍后,我执行以下操作来更新该功能的图标:
var marker = this.findSelectedMarker();
if (marker) {
marker.style.externalGraphic = newIconUrl;
this.layer.redraw();
}
但是,当图层重绘时,图层中的所有要素都使用newIconUrl
,而不仅仅是我试图更新的选定标记。
如何更改我的层的一个选中特征的图标?谢谢。
发布于 2012-09-11 01:03:18
为了解决这个问题,我需要解决两个问题。第一个问题与使用多个OpenLayers样式有关,无论是在图层级别还是在单个要素级别。我删除了每个单独功能的样式,以便只实现以下图层样式:
this.layerStyle = new OpenLayers.StyleMap({
'default': {
externalGraphic: media_url + '${iconURL}',
graphicHeight: 32,
graphicWidth: 32,
graphicXOffset: -16,
graphicYOffset: -32,
fillOpacity: 0.75
}
});
我所做的第二个更改是使用属性替换语法来指定具有名为'${iconURL}'
的特性属性的图标URL。这使我可以通过简单地更改所选要素的属性并重新绘制图层来更改图标url:
focusedMarker.attributes.iconURL = this.focusedURL;
this.layer.redraw();
https://stackoverflow.com/questions/12354483
复制相似问题