Я пытаюсь встроить вызов функции javascript во всплывающее окно листовки.
Я привязываю функцию showPopup () к каждой функции, добавленной на карту. Идея заключается в том, что когда пользователь нажимает на эту функцию, появляется ссылка с пометкой «Подробнее ...», которая должна открывать боковую панель.
Я пытаюсь передать код функций во встроенный javascript: getInfoPanelData (код функции здесь, например, PIPE ), чтобы узнать, с какой функцией я работаю. Однако выполнение этого кода в отладчике Chrome дает
Uncaught ReferenceError: PIPE не определен в: 1: 18.
Я также пытался добавить одинарные кавычки вокруг параметра, но это приводит к SyntaxError:
Неожиданный конец ввода (getInfoPanelData («красный x» в отладчике.
Я не уверен, что могу действительно сделать то, что мне нужно, и надеюсь, что кто-то может указать на мою ошибку или возможные альтернативы.
/*** Code that builds the popup ***/
function showPopup(feature, urlString) {
console.info("onEachFeature: " + feature.properties.Code + " | " + feature.properties.NAME);
var pkVal = parseInt(feature.properties.ParkType, 10);
var parkIcon = "nationalpark-40.png";
var retHtml = "<div id='popup' class='popup'>" +
"<h3 align='center'><img src='icons/" + parkIcon + "'/>" + feature.properties.NAME + "</h3>" +
"<p>State: " + feature.properties.State + " | parkCode: " + feature.properties.Code + " | parkType: " + pkVal + "</p>" +
"<p>Home Page: " + "<a href='" + urlString + "' target='_blank'>" + urlString + "</p>" +
"<p><a href='javascript:getInfoPanelData(" + feature.properties.Code + ");'> More Info...</a></p></div>";
console.info("HTML: " + retHtml);
return retHtml;
}
/*** Code that binds the popup to the feature ***/
/* Create our NPS Layer */
var npsCPs = new L.GeoJSON.AJAX("data/NPS_4326_CPs.json", {
pointToLayer: function(feature, latlng) {
return L.marker(latlng, {
icon: npsIcon
});
},
onEachFeature: function(feature, layer) {
var urlStr = "https://www.nps.gov/" + feature.properties.Code + "/index.htm";
layer.bindPopup(showPopup(feature, urlStr));
}
});