Ich versuche eine benutzerdefinierte Schaltfläche zu erstellen, die in einem Popup angezeigt wird, das eine dynamische Verknüpfung (eine URL) generiert. Ich bin nicht in der Lage, dies über die .setHTML-Datei zu tun, da das Timing nicht ausreicht, um eine Schaltfläche zur Laufzeit an eine Funktion zu binden. Also dachte ich, ich würde versuchen, die newish .setDOMContent Es gibt keine Informationen online, wie diese Funktion funktioniert. Ich frage mich, ob jemand ein Beispiel dafür hat, wo eine Schaltfläche zu dem Popup hinzugefügt wird, das eine Funktion ausführen und Daten senden kann.Mapbox GL Popup .setDOMContent Beispiel
Hier ist mein sehr schlechter Versuch, dies einzurichten.
Diese Funktion erstellt das Popup
function GameObjectPopup(myObject) {
var features = map.queryRenderedFeatures(myObject.point, {
layers: ['seed']
});
if (!features.length) {
return;
}
var feature = features[0];
// Populate the popup and set its coordinates
// based on the feature found.
var popup = new mapboxgl.Popup()
.setLngLat(feature.geometry.coordinates)
.setHTML(ClickedGameObject(feature))
.setDOMContent(ClickedGameObject2(feature))
.addTo(map);
};
Diese Funktion fügt die HTML über die .setHTML
function ClickedGameObject(feature){
console.log("clicked on button");
var html = '';
html += "<div id='mapboxgl-popup'>";
html += "<h2>" + feature.properties.title + "</h2>";
html += "<p>" + feature.properties.description + "</p>";
html += "<button class='content' id='btn-collectobj' value='Collect'>";
html += "</div>";
return html;
}
dieser Funktion wird der DOM-Gehalt über den .setDOMContent
function ClickedGameObject2(feature){
document.getElementById('btn-collectobj').addEventListener('click', function()
{
console.log("clicked a button");
AddGameObjectToInventory(feature.geometry.coordinates);
});
}
hinzufügen möchte
Ich versuche, die Variable von features.geometry.coordinates in die Funktion zu pipen Ion AddGameObjectToInventory()
die Fehler, die ich bekommen habe, wenn auf ein Objekt klicken (so wie Popup erzeugt wird)
Uncaught TypeError: Cannot read property 'addEventListener' of null