簡體   English   中英

傳單-更改標記節點圖標

[英]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仍然有幾種可能的解決方案:

  1. 使用L.geoJSON工廠的onEachFeature選項,測試feature.properties.icon是否不正確,然后重新分配標記圖標。

  2. 使用已經創建的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.

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