2011-08-10 29 views
3

我正在將我的代碼從使用標記圖層轉換爲矢量圖層。我在地圖上以Feature.Vector類的形式顯示標記時出現問題(在我僅使用Feature類之前)。在openlayers中更改feature.vector的外觀

具體來說,我不知道如何顯示每個功能與我選擇的不同圖像。我已經看到了一些使用樣式地圖來改變一般特徵樣式的例子,但是我還沒有看到直接設置特徵圖片的方法。

這似乎是一個簡單的問題,但我還沒有找到解決方案。我目前正在嘗試使用樣式屬性:

var feature = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(ll.lon, ll.lat), {externalGraphic: "http://www.openlayers.org/dev/img/marker.png"}); 

但是,這隻會導致正常的默認圖標(橙色圓圈)。

設置功能的data.icon並創建一個標記同樣不起作用。

在此先感謝!

+0

爲什麼你使用矢量圖層來顯示標記? – Alex

+0

亞歷克斯,我正在改變爲矢量圖層,因爲它具有更多特徵 - 我將使用幾何圖形類在地圖上添加諸如特徵的聚類和旋轉等功能。 – Yuna

回答

7

您將佔位符置於由特徵屬性填充的圖層樣式中。

var style = OpenLayers.Util.extend({ 
    externalGraphic : "${icon}", 
    pointRadius  : 15 
}, OpenLayers.Feature.Vector.style['default']); 

var layer = new OpenLayers.Layer.Vector("Simple Geometry", { style: style }), 
    point = new OpenLayers.Geometry.Point(ll.lon, ll.lat), 
    feature = new OpenLayers.Feature.Vector(point, { icon: "icon.png" }); 

layer.addFeature(feature); 
+3

如果你忽略了PointRadius,那麼externalGraphic根本不顯示。 thanx,救了我。 UPVOTED! –