繁体   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