传单 - 更改标记节点图标



这是我的GeoJSON点:

{
  "type": "Feature",
  "geometry": {
    "type": "Point",
    "coordinates": [
      "-83.882517",
      "32.55514717"
    ]
  },
  "properties": {
    "popupContent": "u003cbu003eStart OS:(2018-01-25-06.10.46.140000 )u003c/bu003eu003cbr/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这些数据。

但在某些情况下,您的 GeoJSON 数据未在要素属性中指定适当的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)

最新更新