Auf dieser Seite werden die UI- und Fehlerereignisse beschrieben, die programmatisch erfasst und verarbeitet werden können.
Ereignisse auf der Benutzeroberfläche
In diesem Abschnitt werden die interaktiven Ereignisse und Benachrichtigungen zu Statusänderungen beschrieben, die Sie bei der Arbeit mit 3D-Karten programmatisch erfassen und verarbeiten können. JavaScript funktioniert im Browser ereignisgesteuert. Das heißt, es reagiert auf Nutzerinteraktionen mit der Erzeugung von Ereignissen, auf die Ihr Programm warten und entsprechend Code ausführen kann.
Es gibt zwei Haupttypen von Ereignissen:
- Nutzerinteraktionsereignisse (z. B. Mausklicks) werden vom 3D-Karten-Viewport an Ihren Code weitergeleitet. Mit diesen Ereignissen können Sie auf direkte Nutzeraktionen in der 3D-Kartenumgebung reagieren. Beispiel ansehen.
- Benachrichtigungen zu Statusänderungen geben Aufschluss über Aktualisierungen der zugrunde liegenden 3D-Kartendatenmodelle und des Renderingstatus. Sie folgen dem herkömmlichen Benennungsschema
gmp-propertychange.
Jedes 3D Mapping API-Objekt stellt eine Reihe benannter Ereignisse zur Verfügung, für die Ihr Programm Ereignis-Listener registrieren und bei Eintreten dieser Ereignisse mit der integrierten Funktion addEventListener() Logik ausführen kann.
Im folgenden Beispiel wird gezeigt, welche Ereignisse ausgelöst werden, wenn ein Nutzer mit der Karte interagiert:
Vollständigen Quellcode des Beispiels ansehen
TypeScript
const mapElement = document.querySelector('gmp-map-3d')!; async function init() { // Import the needed libraries. await google.maps.importLibrary('maps3d'); const events = [...document.querySelectorAll('div > p')].map( (i) => i.textContent ); for (const event of events) { mapElement?.addEventListener(event, () => { const eventElement = document.querySelector(`#${event}`); eventElement?.classList.add('active'); setTimeout(() => { eventElement?.classList.remove('active'); }, 1000); }); } } void init();
JavaScript
const mapElement = document.querySelector('gmp-map-3d'); async function init() { // Import the needed libraries. await google.maps.importLibrary('maps3d'); const events = [...document.querySelectorAll('div > p')].map( (i) => i.textContent ); for (const event of events) { mapElement?.addEventListener(event, () => { const eventElement = document.querySelector(`#${event}`); eventElement?.classList.add('active'); setTimeout(() => { eventElement?.classList.remove('active'); }, 1000); }); } } void init();
CSS
html, body { height: 100%; margin: 0; padding: 0; } body { display: flex; flex-direction: row; } gmp-map-3d { flex-grow: 1; } .myaside { flex-basis: 25%; font-family: Droid Sans Mono, monospace; font-size: 15px; padding: 2px; } .myaside > p.active { background-color: #9cf; }
HTML
<html>
<head>
<title>3d-map-events</title>
<link rel="stylesheet" type="text/css" href="./style.css" />
<script type="module" src="./index.js"></script>
<script>
// prettier-ignore
(g=>{var h,a,k,p="The Google Maps JavaScript API",c="google",l="importLibrary",q="__ib__",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement("script"));e.set("libraries",[...r]+"");for(k in g)e.set(k.replace(/[A-Z]/g,t=>"_"+t[0].toLowerCase()),g[k]);e.set("callback",c+".maps."+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+" could not load."));a.nonce=m.querySelector("script[nonce]")?.nonce||"";m.head.append(a)}));d[l]?console.warn(p+" only loads once. Ignoring:",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})({
key: "AIzaSyA6myHzS10YXdcazAFalmXvDkrYCp5cLc8"
});
</script>
</head>
<body>
<gmp-map-3d
mode="hybrid"
center="40.6338, 14.6028, 54.82"
range="1000"
tilt="65"></gmp-map-3d>
<div class="myaside">
<p id="gmp-centerchange">gmp-centerchange</p>
<p id="gmp-click">gmp-click</p>
<p id="gmp-headingchange">gmp-headingchange</p>
<p id="gmp-rangechange">gmp-rangechange</p>
<p id="gmp-rollchange">gmp-rollchange</p>
<p id="gmp-steadychange">gmp-steadychange</p>
<p id="gmp-tiltchange">gmp-tiltchange</p>
</div>
</body>
</html>