我是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);
});
});