javascript-将geojson标记加载到mapbox设置自定义图标图像中

我是mapbox / leaflet的新手,我认为这是我在过去两天中遇到的一个非常基本的问题,尽管我尝试了几种方法都无法解决.

我正在通过geojson加载标记:

var ma_3 = L.mapbox.featureLayer().loadURL('./data/marathon/marker3x.geojson');

然后尝试根据geojson数据中使用的标题更改大小或颜色等属性:

ma_3.on('ready', function(layer) {
                this.eachLayer(function(marker) {
            if (marker.toGeoJSON().properties.title === 'Verpflegung') {

                marker.setIcon(L.mapbox.marker.icon({                   
                    "marker-size": 'large'
                }));
            } else {
                marker.setIcon(L.mapbox.marker.icon({}));
            }

            marker.bindPopup(marker.toGeoJSON().properties.id + ', ' +
                marker.toGeoJSON().properties.title);
        });
    })
    .addTo(baseMap);

geojson看起来像这样:

{
      "type": "Feature",
      "properties": {
        "id": "marker-ie2tbbh05",
        "title": "Verpflegung",
        "description": "",
        "marker-size": "medium",
        "marker-color": "#b7ddf3",
        "marker-symbol": "marker-stroked"
      },
      "geometry": {
        "type": "Point",
        "coordinates": [
          6.431395,
          51.19433
        ]
      },

我是否错过了某些东西,因为我也尝试通过使用

var icon_live = L.icon({ iconUrl: './img/icon-live.png', iconSize: [35,35] });

在setIcon函数中的某处,但似乎没有任何作用.
如果有人可以给我指出正确的方向.真的很值得.

解决方法:

我猜这是一个典型的初学者错误,也许只是我一个人,但是我发现在哪种情况下使用setIcon的多个选项都非常令人困惑.
最后,我使用.on(layeradd)和marker.setIcon(pathToYourIcon)使其工作.

ma_3.on('layeradd', function(layer) {
            this.eachLayer(function(marker) {
        if (marker.toGeoJSON().properties.title === 'Verpflegung') {
            marker.setIcon(icon_live);
        } 

        marker.bindPopup(marker.toGeoJSON().properties.id + ', ' +
            marker.toGeoJSON().properties.title);
    });
});
上一篇:sublime 控制台输入解决方案


下一篇:javascript-传单圆形绘图/编辑问题