[英]leaflet - Changing marker node icon
這是我的GeoJSON要點:
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
"-83.882517",
"32.55514717"
]
},
"properties": {
"popupContent": "\u003cb\u003eStart OS:(2018-01-25-06.10.46.140000 )\u003c/b\u003e\u003cbr/\u003e(-83.882517, 32.55514717)\u003cbr/\u003e",
"style": {
"radius": 8,
"weight": 1,
"color": "#000033",
"fillColor": "#FFFF00",
"opacity": 1,
"fillOpacity": 1
},
"icon": null
},
"id": 5001
},
現在,您看到該元素具有"icon": null
。 如何訪問特定元素並更改其圖標(例如XXX.setIcon(trainIcon);
)?
我不了解如何訪問單個元素並更改其某些值。 所有特征點都是同一層的一部分。
謝謝!
如果我理解正確,則可以通過將小葉地圖上的GeoJSON數據饋送到L.geoJSON
工廠來顯示L.geoJSON
。
但是在某些情況下,您的GeoJSON數據未在Feature屬性中指定適當的icon
,因此您希望對其進行修改。
當然,理想的做法是預先修復您的GeoJSON數據,而不是嘗試在運行時修復這種情況。 但是,如果由於某種原因無法修改GeoJSON數據,則Leaflet仍然有幾種可能的解決方案:
使用L.geoJSON
工廠的onEachFeature
選項,測試feature.properties.icon
是否不正確,然后重新分配標記圖標。
使用已經創建的L.geoJSON
圖層組的eachLayer
方法,測試layer.feature.properties.icon
是否不正確,然后重新分配標記圖標。
由於功能還具有一個ID,因此,如果您知道需要重做的功能的ID,則也可以測試此ID而不是properties.icon
。
理想情況下,您將geoJSON配置為至少返回初始圖標,但是您可以通過跟蹤集合中的L.marker
對象,然后在需要更新圖標時調用setIcon()
來處理此問題。
假設您像這樣創建標記:
const myMarker = L.marker(latlng, {
'icon': L.icon({
iconUrl: /example.png
iconSize: [37, 37],
iconAnchor: [18, 37], correspond to marker's location
})
}).addTo(myMap);
然后,您可以在計時器事件上調用myMarker.setIcon(newIcon)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.