簡體   English   中英

更改圖層中單個矢量要素的圖標

[英]Change Icon of Single Vector Feature in Layer

目前,我正在嘗試更改用戶關注的矢量層的特定功能的圖標。 我將每個要素添加到地圖中,如下所示:

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使用newIconUrl ,而不僅僅是我要更新的選定標記。

如何更改圖層中一個選定要素的圖標? 謝謝。

為了解決此問題,我需要解決兩個問題。 第一個與在圖層級別以及單個要素級別使用多種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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM