Вот как ты мог это сделать.Свяжите событие onclick с маркером при его создании, а затем используйте функцию, которая создает независимое всплывающее окно при нажатии.
Пример:
var data = {
"datapoint":[
{"img":"abc.jpeg","latitud":"18.52","longitud":"82.4767"},
{"img":"bbc.jpeg","latitud":"17.7375","longitud":"82.8347"}
]
}
function markerOnClick(e){
L.popup()
.setLatLng(e.latlng)
.setContent('<img src="'+e.target.img+'">')
.openOn(map);
}
for(i in data.datapoint){
var marker = L.marker([data.datapoint[i].latitud, data.datapoint[i].longitud]);
marker.img = data.datapoint[i].img;
marker.on('click', markerOnClick);
map.addLayer(marker);
}
Возможно, вы захотите посмотреть на layerGroups, поэтомуВы можете сгруппировать все эти маркеры и делать такие вещи, как включать и выключать их или обновлять все по мере добавления и удаления маркеров, но это пример «голых костей».
В этом примере нет необходимости в ajax, так как изображение не будет загружено, пока не будет создано всплывающее окно.Вам нужно будет использовать ajax, если вы хотите добавить другой контент.
Я добавил JSFiddle с примером листовки, чтобы показать, как это работает.Вы можете поиграть с размером всплывающего окна, чтобы удовлетворить ваши потребности