Точная причина проблемы с layer._leaflet_id = feature.properties.fid;
остается неизвестной (как указывает YaFred, она является внутренней по отношению к Leaflet и поэтому не имеет подтверждающей документации), но я нашел альтернативное решение, которое, я надеюсь, поможет другим.
Вместо layer._leaflet_id = feature.properties.fid;
я использовал layers[feature.properties.fid] = layer;
, предварительно позвонив var layers = {};
, основываясь на этом ответе.Я включил обновленный фрагмент кода, который создает функции Next и Previous, которые можно использовать для прокрутки слоя.
var currentPhoto;
var layers = {};
function onEachFeature(feature, layer) {
layer.bindPopup('<b>Location: </b>' + feature.properties.name);
layer.on(
"click",function(e){getName(e);
currentPhoto = parseInt(layer.feature.properties.fid);
});
layers[feature.properties.fid] = layer;
}
// call from outside map
function highlightFeature(fid){
layers[fid].fireEvent('click');
}
$('#prev').click(function() {
highlightFeature(currentPhoto-1);
});
$('#next').click(function() {
highlightFeature(currentPhoto+1);
});
function getName(e) {
//info.update is a function used to populate an external div
info.update(e.target.feature.properties);
}