1. Vorbereitung
In diesem Codelab lernen Sie alles, was Sie brauchen, um die Google Maps Platform für das Web zu verwenden. Sie beginnen mit der Einrichtung, dem Laden der Maps JavaScript API, dem Anzeigen Ihrer ersten Karte, dem Arbeiten mit Markierungen und Markierungsclustern, dem Zeichnen auf der Karte sowie der Nutzerinteraktion.
Aufgaben
In diesem Codelab erstellen Sie eine einfache Webanwendung, die folgende Aktionen ausführt:
- Lädt die Maps JavaScript API
- Zeigt eine Karte in der Mitte von Sydney, Australien
- Zeigt benutzerdefinierte Markierungen für beliebte Attraktionen in Sydney an
- Implementiert Markierungscluster
- Aktiviert die Interaktion mit dem Nutzer, die vor Kurzem gezogen und einen Kreis auf der Karte gezeichnet hat, wenn eine Markierung angeklickt wird
Lerninhalte
- Erste Schritte mit der Google Maps Platform
- Maps JavaScript API dynamisch über JavaScript-Code laden
- Karte wird geladen
- Markierungen, benutzerdefinierte Markierungen und Markierungscluster verwenden
- Arbeiten mit dem Maps JavaScript API-Ereignissystem für die Nutzerinteraktion
- Karte dynamisch steuern
- Auf der Karte zeichnen
2. Vorbereitung
Sie müssen sich mit den unten beschriebenen Elementen vertraut machen, um dieses Codelab abzuschließen. Wenn Sie bereits mit der Google Maps Platform vertraut sind, fahren Sie mit dem Codelab fort.
Erforderliche Google Maps Platform-Produkte
In diesem Codelab verwenden Sie die folgenden Google Maps Platform-Produkte:
- Maps JavaScript API
- OpenMarker-Clustering-Bibliothek MarkerClustererPlus
Sonstige Anforderungen für dieses Codelab
Für dieses Codelab benötigen Sie die folgenden Konten, Dienste und Tools:
- Google Cloud Platform-Konto mit aktivierter Abrechnung
- Ein Google Maps Platform API-Schlüssel mit aktivierter Maps JavaScript API
- Grundkenntnisse in JavaScript, HTML und CSS
- Node.js auf Ihrem Computer installiert
- Texteditor oder IDE deiner Wahl
Einführung in Google Maps Platform
Wenn du die Google Maps Platform noch nicht verwendet hast, folge der Einführung in die Google Maps Platform oder folge der Anleitung unter Erste Schritte mit der Google Maps Platform-Playlist.
- Erstellen Sie ein Rechnungskonto.
- Projekt erstellen
- Aktivieren Sie die im vorherigen Abschnitt aufgeführten Google Maps Platform APIs und SDKs.
- Generieren Sie den API-Schlüssel.
3. Einrichten
Google Maps Platform einrichten
Wenn Sie noch kein Google Cloud Platform-Konto und kein Projekt mit aktivierter Abrechnung haben, lesen Sie den Leitfaden Erste Schritte mit der Google Maps Platform, um ein Rechnungskonto und ein Projekt zu erstellen.
- Klicken Sie in der Cloud Console auf das Drop-down-Menü für Projekte und wählen Sie das Projekt aus, das Sie für dieses Codelab verwenden möchten.
- Aktivieren Sie im Google Cloud Marketplace die für dieses Codelab erforderlichen Google Maps Platform APIs und SDKs. Folgen Sie dazu der Anleitung in diesem Video oder dieser Dokumentation.
- Generieren Sie in der Cloud Console auf der Seite Anmeldedaten einen API-Schlüssel. Folgen Sie der Anleitung in diesem Video oder dieser Dokumentation. Für alle Anfragen an die Google Maps Platform ist ein API-Schlüssel erforderlich.
Node.js-Einrichtung
Wenn Sie die Node.js-Laufzeit nicht auf Ihrem Computer herunterladen und installieren möchten, rufen Sie https://searchads.org/ auf.
Node.js enthält den npm-Paketmanager, den Sie zum Installieren von Abhängigkeiten für dieses Codelab benötigen.
Projektstartvorlage einrichten
Bevor Sie mit diesem Codelab beginnen, müssen Sie Folgendes tun, um die Startprojektvorlage sowie den vollständigen Lösungscode herunterzuladen:
- Laden Sie das GitHub-Repository für dieses Codelab unter https://github.com/googlecodelabs/maps-platform-101-js herunter oder erstellen Sie es.
Das Starter-Projekt befindet sich im Verzeichnis /starter
und enthält die grundlegende Dateistruktur, die Sie für das Codelab benötigen. Alles, was du brauchst, findest du im Verzeichnis /starter/src
. 2. Führen Sie nach dem Herunterladen des Starter-Projekts npm install
im Verzeichnis /starter
aus. Dadurch werden alle erforderlichen Abhängigkeiten installiert, die in package.json
aufgeführt sind. 3. Führen Sie nach der Installation der Abhängigkeiten npm start
im Verzeichnis aus.
Das Starter-Projekt wurde so eingerichtet, dass Sie webpack-dev-server verwenden, der den von Ihnen lokal geschriebenen Code kompiliert und ausführt. Wenn Sie Codeänderungen vornehmen, wird Ihre App von webpack-dev-server automatisch im Browser neu geladen.
Wenn Sie möchten, dass der vollständige Lösungscode ausgeführt wird, führen Sie die oben genannten Einrichtungsschritte im Verzeichnis /solution
aus.
4. Maps JavaScript API laden
Führen Sie zuerst die Schritte unter Einrichten aus. Fertig? Zeit, deine erste Webanwendung mit der Google Maps Platform zu erstellen.
Die Verwendung der Google Maps Platform für das Web bildet die Maps JavaScript API. Mit dieser API kannst du alle Funktionen der Google Maps Platform wie etwa Karte, Markierungen, Zeichentools und andere Google Maps Platform-Dienste wie Places nutzen.
Wenn du bereits Erfahrung mit der Maps JavaScript API hast, solltest du sie eventuell laden, indem du ein script
-Tag in eine HTML-Datei einfügst:
<script async defer src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap">
Das ist eine absolut gültige Methode zum Laden der API, in modernen JavaScript-Abhängigkeiten sind sie jedoch normalerweise dynamisch aus Code enthalten. Um die Entsprechung des Tags script
aus dem Code zu erstellen, verwenden Sie das @googlemaps/js-api-loader-Modul. Die JS API-Ladefunktion ist bereits in den Abhängigkeiten der package.json
-Datei des Projekts enthalten, die installiert wurde, als du npm install
zuvor ausgeführt hast.
So verwenden Sie das JS API Loader:
- Öffnen Sie
/src/app.js
. In dieser Datei erledigen Sie alle Aufgaben für dieses Codelab. - Importieren Sie die
Loader
-Klasse aus @googlemaps/js-api-loader.
Fügen Sie oben inapp.js
Folgendes ein:import { Loader } from '@googlemaps/js-api-loader';
- Erstelle ein
apiOptions
-Objekt.
Für die KlasseLoader
ist ein JSON-Objekt erforderlich, das verschiedene Optionen zum Laden der Maps JavaScript API angibt, z. B. den Google Maps Platform API-Schlüssel, die zu ladende Version der API und alle weiteren Bibliotheken, die von der Maps JS API geladen werden sollen. Für dieses Codelab müssen Sie nur den API-Schlüssel angeben, indem Sie Folgendes anapp.js
anhängen:const apiOptions = { apiKey: "YOUR API KEY" }
- Erstelle eine Instanz von
Loader
und übergib ihrapiOptions
.const loader = new Loader(apiOptions);
- Rufe die Maps JS API auf.
Rufe dieload()
in der InstanzLoader
auf, um die API zu laden. Das JS API Loader gibt ein Promise zurück, das aufgelöst wird, sobald die API geladen und einsatzbereit ist. Füge den folgenden Stub hinzu, um die API zu laden und das Versprechen zu verarbeiten:loader.load().then(() => { console.log('Maps JS API loaded'); });
Wenn alles funktioniert hat, sollte die Anweisung console.log
in der Browserkonsole angezeigt werden:
Kurz gesagt: Du hast die Maps JavaScript API jetzt dynamisch aus Code geladen und die Callback-Funktion definiert, die ausgeführt wird, sobald die Maps JavaScript API vollständig geladen wurde.
Die app.js
-Datei sollte in etwa so aussehen:
import { Loader } from '@googlemaps/js-api-loader';
const apiOptions = {
apiKey: "YOUR API KEY"
}
const loader = new Loader(apiOptions);
loader.then(() => {
console.log('Maps JS API Loaded');
});
Nachdem die Maps JavaScript API geladen wurde, wird die Karte im nächsten Schritt geladen.
5. Karte anzeigen
Zeit, deine erste Karte anzuzeigen!
Der häufigste Bestandteil der Maps JavaScript API ist google.maps.Map
. Mit dieser Klasse können Karteninstanzen erstellt und bearbeitet werden. Sehen Sie sich an, wie diese neue Funktion namens displayMap()
erstellt wird.
- Definieren Sie Ihre Karteneinstellungen.
Die Maps JavaScript API unterstützt eine Vielzahl verschiedener Einstellungen für die Karte. Es sind jedoch nur zwei erforderlich:center
: Gibt den Breiten- und Längengrad für die Mitte der Karte an.zoom
: Legt die anfängliche Zoomstufe der Karte fest.
function displayMap() { const mapOptions = { center: { lat: -33.860664, lng: 151.208138 }, zoom: 14 }; }
- Rufe die
div
ab, in die die Karte in das DOM eingefügt werden soll.
Bevor du die Karte anzeigen kannst, musst du der Maps JavaScript API mitteilen, wo sie auf der Seite erscheinen soll. Wenn Sie einen kurzen Blick aufindex.html
werfen, sehen Sie, dass es bereits einendiv
gibt, der so aussieht:
Wenn Sie der Maps JavaScript API mitteilen möchten, wo die Karte eingeschleust werden soll, verwenden Sie<div id="map"></div>
document.getElementById
für den DOM-Verweis:const mapDiv = document.getElementById('map');
- Erstelle eine Instanz von
google.maps.Map
.
Wenn du die Maps JavaScript API bitten möchtest, eine neue Karte zu erstellen, die angezeigt werden kann, erstelle eine Instanz vongoogle.maps.Map
und übergib die SpaltenmapDiv
undmapOptions
. Sie können auch dieMap
-Instanz aus dieser Funktion zurückgeben, um später mehr zu erledigen:const map = new google.maps.Map(mapDiv, mapOptions); return map;
- Karte anzeigen!
Nachdem du die gesamte Logik zum Erstellen der Karteninstanz definiert hast, müssen nur nochdisplayMap()
über den JS API-Promise-Handler aufgerufen werden, sodass die API nach dem Laden der Maps JavaScript API aufgerufen wird:loader.then(() => { console.log('Maps JS API loaded'); const map = displayMap(); });
Sie sollten nun eine wunderschöne Karte von Sydney in Ihrem Browser sehen:
Zur Zusammenfassung: In diesem Schritt haben Sie die Anzeigeoptionen für die Karte definiert, eine neue Karteninstanz erstellt und sie in das DOM eingefügt.
Die displayMap()
-Funktion sollte in etwa so aussehen:
function displayMap() {
const mapOptions = {
center: { lat: -33.860664, lng: 151.208138 },
zoom: 14
};
const mapDiv = document.getElementById('map');
const map = new google.maps.Map(mapDiv, mapOptions);
return map;
}
6. Cloudbasierter Kartenstil (optional)
Sie können den Stil Ihrer Karte mit cloudbasierten Kartenstilen anpassen.
Karten-ID erstellen
Wenn Sie noch keine Karten-ID mit einem zugehörigen Kartenstil erstellt haben, finden Sie im Leitfaden zu Karten-IDs folgende Schritte:
- Erstellen Sie eine Karten-ID.
- Kartenkarte mit einem Kartenstil verknüpfen
Karten-ID zur App hinzufügen
Wenn du die von dir erstellte Karten-ID verwenden möchtest, ändere die Funktion displayMap
in der Datei app.js
und übergibst deine Karten-ID in der Property mapId
des mapOptions
-Objekts.
app.js
function displayMap() {
const mapOptions = {
center: { lat: -33.860664, lng: 151.208138 },
zoom: 14,
mapId: 'YOUR_MAP_ID'
};
const mapDiv = document.getElementById('map');
return new google.maps.Map(mapDiv, mapOptions);
}
Sobald der Vorgang abgeschlossen ist, sollte der ausgewählte Stil auf der Karte zu sehen sein.
7. Der Karte Markierungen hinzufügen
Es gibt viele Dinge, die Entwickler mit der Maps JavaScript API machen. Die Platzierung von Markierungen auf der Karte ist jedoch am beliebtesten. Mit Markierungen können Sie bestimmte Punkte auf der Karte anzeigen. Sie sind ein gängiges UI-Element für die Interaktion mit Nutzern. Wenn Sie Google Maps bereits verwendet haben, kennen Sie wahrscheinlich die Standardmarkierung, die so aussieht:
In diesem Schritt fügen Sie mit google.maps.Marker
Markierungen auf der Karte ein.
- Definieren Sie ein Objekt für Ihre Markierungenpositionen.
Erstellen Sie zuerst eine neueaddMarkers()
-Funktion und deklarieren Sie einlocations
-Objekt, das die folgenden Breiten- und Längengrade für beliebte Touristenattraktionen in Sydney enthält.
Außerdem muss dieMap
-Instanz an die Funktion übergeben werden. Sie benötigen es später, wenn Sie Ihre Markierungsinstanzen erstellen.function addMarkers(map) { const locations = { operaHouse: { lat: -33.8567844, lng: 151.213108 }, tarongaZoo: { lat: -33.8472767, lng: 151.2188164 }, manlyBeach: { lat: -33.8209738, lng: 151.2563253 }, hyderPark: { lat: -33.8690081, lng: 151.2052393 }, theRocks: { lat: -33.8587568, lng: 151.2058246 }, circularQuay: { lat: -33.858761, lng: 151.2055688 }, harbourBridge: { lat: -33.852228, lng: 151.2038374 }, kingsCross: { lat: -33.8737375, lng: 151.222569 }, botanicGardens: { lat: -33.864167, lng: 151.216387 }, museumOfSydney: { lat: -33.8636005, lng: 151.2092542 }, maritimeMuseum: { lat: -33.869395, lng: 151.198648 }, kingStreetWharf: { lat: -33.8665445, lng: 151.1989808 }, aquarium: { lat: -33.869627, lng: 151.202146 }, darlingHarbour: { lat: -33.87488, lng: 151.1987113 }, barangaroo: { lat: - 33.8605523, lng: 151.1972205 } } }
- Erstelle für jede Markierung, die angezeigt werden soll, eine
google.maps.Marker
-Instanz.
Verwende zum Erstellen dieser Markierungen den Code unten, um mit einerfor...in
-Schleife das Objektlocations
zu durchlaufen. Erstelle außerdem eine Reihe von Optionen für die Darstellung der einzelnen Markierungen und erstelle dann für jeden Standort eine Instanz vongoogle.maps.Marker
.
Sieh dir die Propertyicon
vonmarkerOptions
an. Erinnern Sie sich noch an die Standardmarkierung für Karten von früher? Wusstest du auch, dass du die Markierung für jedes beliebige Bild anpassen kannst? Ja, das geht.
Mit dericon
-Property kannst du den Pfad zu einer Bilddatei angeben, die du als benutzerdefinierte Markierung verwenden möchtest. Wenn Sie dieses Codelab mit unserer Projektvorlage begonnen haben, ist für Sie bereits ein Bild in/src/images
enthalten.
Außerdem müssen Sie die Markierungsinstanzen in einem Array speichern und von der Funktion zurückgeben, damit sie später verwendet werden können.const markers = []; for (const location in locations) { const markerOptions = { map: map, position: locations[location], icon: './img/custom_pin.png' } const marker = new google.maps.Marker(markerOptions); markers.push(marker); } return markers;
- Markierungen anzeigen
Die Maps JavaScript API erstellt automatisch eine Markierung und zeigt sie an, wenn eine neue Instanz vongoogle.maps.Marker
erstellt wird. Jetzt musst du also nur noch deinen JS API-Promise-Handler aktualisieren, umaddMarkers()
aufzurufen und deineMap
-Instanz zu übergeben:loader.then(() => { console.log('Maps JS API loaded'); const map = displayMap(); const markers = addMarkers(map); });
Jetzt sollten Sie benutzerdefinierte Markierungen auf der Karte sehen:
Zur Erinnerung: In diesem Schritt haben Sie einen Satz an Markierungspositionen definiert und eine Instanz von google.maps.Marker
mit einem benutzerdefinierten Markierungssymbol für jeden Standort erstellt.
Die addMarkers()
-Funktion sollte in etwa so aussehen:
function addMarkers(map) {
const locations = {
operaHouse: { lat: -33.8567844, lng: 151.213108 },
tarongaZoo: { lat: -33.8472767, lng: 151.2188164 },
manlyBeach: { lat: -33.8209738, lng: 151.2563253 },
hyderPark: { lat: -33.8690081, lng: 151.2052393 },
theRocks: { lat: -33.8587568, lng: 151.2058246 },
circularQuay: { lat: -33.858761, lng: 151.2055688 },
harbourBridge: { lat: -33.852228, lng: 151.2038374 },
kingsCross: { lat: -33.8737375, lng: 151.222569 },
botanicGardens: { lat: -33.864167, lng: 151.216387 },
museumOfSydney: { lat: -33.8636005, lng: 151.2092542 },
maritimeMuseum: { lat: -33.869395, lng: 151.198648 },
kingStreetWharf: { lat: -33.8665445, lng: 151.1989808 },
aquarium: { lat: -33.869627, lng: 151.202146 },
darlingHarbour: { lat: -33.87488, lng: 151.1987113 },
barangaroo: { lat: - 33.8605523, lng: 151.1972205 }
}
const markers = [];
for (const location in locations) {
const markerOptions = {
map: map,
position: locations[location],
icon: './img/custom_pin.png'
}
const marker = new google.maps.Marker(markerOptions);
markers.push(marker);
}
return markers;
}
Im nächsten Schritt erfahren Sie, wie Sie die Markierungs-Clustering-Funktion verbessern können.
8. Markierungscluster aktivieren
Wenn Sie eine große Anzahl von Markierungen verwenden oder sich sehr dicht beieinander befinden, kann es zu Überschneidungen kommen oder die Markierungen zu überfüllt erscheinen. Dies beeinträchtigt die Nutzererfahrung. Nachdem Sie die Markierungen im letzten Schritt erstellt haben, könnten Sie beispielsweise Folgendes bemerken:
Hier kommen Markierungscluster zum Einsatz. Markierungscluster sind eine weitere häufig implementierte Funktion, mit der Markierungen in der Nähe in einem einzigen Symbol gruppiert werden, das sich je nach Zoomstufe so verändert:
Der Algorithmus für das Markierungs-Clustering teilt den sichtbaren Bereich der Karte in ein Raster auf und anschließend Cluster-Symbole, die sich in derselben Zelle befinden. Da sich durch die Google Maps Platform eine hilfreiche Open-Source-Bibliothek mit dem Namen MarkerClustererPlus
entwickelt, die Ihnen alles automatisch erledigt, brauchen Sie sich darüber keine Sorgen zu machen. Sie können sich die Quelle für MarkerClustererPluson-GitHub ansehen.
- Importieren Sie den
MarkerCluster
.
Beim Vorlagenprojekt für dieses Codelab ist dieMarkerClustererPlus
-Dienstprogrammbibliothek bereits in den Abhängigkeiten enthalten, die in derpackage.json
-Datei deklariert sind. Daher hast du sie bereits installiert, als dunpm install
am Anfang dieses Codelabs ausgeführt hast.
Fügen Sie oben in der Dateiapp.js
Folgendes hinzu, um die Bibliothek zu importieren:import MarkerClusterer from '@google/markerclustererplus';
- Erstellen Sie eine neue Instanz von
MarkerClusterer
.
Zum Erstellen von Markierungsclustern sind zwei Schritte erforderlich: Geben Sie die Symbole an, die für die Markierungscluster verwendet werden sollen, und erstellen Sie eine neue Instanz vonMarkerClusterer
.
Zuerst deklarieren Sie ein Objekt, das den Pfad zu den gewünschten Symbolen angibt. Im Vorlagenprojekt sind bereits in./img/m
gespeicherte Bilder vorhanden. Die Bilddateinamen sind sequenziell mit demselben Präfix nummeriert:m1.png
,m2.png
,m3.png
usw.
Wenn Sie die EigenschaftimagePath
in den Optionen für den Markierungs-Cluster festlegen, geben Sie einfach den Pfad und das Dateipräfix an. Der Markierungs-Cluster verwendet automatisch alle Dateien mit diesem Präfix und fügt am Ende eine Zahl hinzu.
Erstellen Sie als Nächstes eine neue Instanz vonMarkerClusterer
und übergeben Sie die Instanz vonMap
, in der die Markierungscluster angezeigt werden sollen, sowie ein Array vonMarker
Instanzen, die Sie gruppieren möchten.function clusterMarkers(map, markers) { const clustererOptions = { imagePath: './img/m' } const markerCluster = new MarkerClusterer(map, markers, clustererOptions); }
- Markierungs-Cluster anzeigen
Rufen SieclusterMarkers()
aus dem Programmiersprache-Handler JS auf. Die Markierungscluster werden der Karte automatisch hinzugefügt, wenn dieMarkerClusterer
-Instanz im Funktionsaufruf erstellt wird.loader.then(() => { console.log('Maps JS API loaded'); const map = displayMap(); const markers = addMarkers(map); clusterMarkers(map, markers); });
Auf der Karte sollten nun einige Markierungs-Cluster zu sehen sein.
Wenn Sie heran- oder herauszoomen, werden die Cluster von MarkerClustererPlus automatisch neu nummeriert und ihre Größe angepasst. Sie können auch auf ein Symbol für Markierungscluster klicken, um heranzuzoomen und alle in diesem Cluster enthaltenen Markierungen zu sehen.
Zur Zusammenfassung: In diesem Schritt haben Sie die MarkerClustererPlus
-Open-Source-Bibliothek importiert und daraus eine Instanz von MarkerClusterer
erstellt, die automatisch die Markierungen aus dem vorherigen Schritt erstellt.
Die clusterMarkers()
-Funktion sollte in etwa so aussehen:
function clusterMarkers(map, markers) {
const clustererOptions = { imagePath: './img/m' }
const markerCluster = new MarkerClusterer(map, markers, clustererOptions);
}
Als Nächstes erfahren Sie, wie Sie mit Nutzerinteraktionen umgehen.
9. Nutzerinteraktion hinzufügen
Du hast jetzt eine tolle Karte, auf der einige der beliebtesten Touristenziele in Sydney angezeigt werden. In diesem Schritt fügen Sie über das Ereignissystem der Maps JavaScript API eine weitere Verarbeitung von Nutzerinteraktionen hinzu, um die Nutzerfreundlichkeit Ihrer Karte zu verbessern.
Die Maps JavaScript API bietet ein umfassendes Ereignissystem, in dem JavaScript-Event-Handler verwendet werden, um verschiedene Nutzerinteraktionen im Code zu verarbeiten. Beispielsweise können Sie Ereignis-Listener erstellen, um die Ausführung von Code für Interaktionen wie Klicks auf Karten und Markierungen, das Schwenken der Karte und das Heran- und Herauszoomen auszulösen.
In diesem Schritt fügen Sie den Markierungen einen Klick-Listener hinzu. Anschließend blenden Sie programmatisch den Kartenschwingpunkt ein, damit die Markierung, auf die der Nutzer geklickt hat, in der Mitte der Karte angezeigt wird.
- Klick-Listener für Markierungen festlegen
Für alle Objekte in der Maps JavaScript API, die das Ereignissystem unterstützen, sind bestimmte Standardfunktionen zur Verarbeitung von Nutzerinteraktionen verfügbar, z. B.addListener
undremoveListener
.
Wenn du jeder Markierung einen Klickereignis-Listener hinzufügen möchtest, iteriere dasmarkers
-Array und rufeaddListener
für die Markierungsinstanz auf, um einen Listener für dasclick
-Ereignis anzuhängen:function addPanToMarker(map, markers) { markers.map(marker => { marker.addListener('click', event => { }); }); }
- Schwenke zu einer Markierung, wenn darauf geklickt wird.
Das Ereignisclick
wird ausgelöst, wenn ein Nutzer auf eine Markierung klickt oder tippt, und gibt ein Ereignis als JSON-Objekt mit Informationen zum angeklickten UI-Element zurück. Um die Nutzerfreundlichkeit der Karte zu verbessern, kannst du dasclick
-Ereignis verwenden und seinLatLng
-Objekt verwenden, um den Breiten- und Längengrad der angeklickten Markierung zu erhalten.
Überschreibe sie dann an die integrierte FunktionpanTo()
derMap
-Instanz, um die Karte gleichmäßig auf den aktuellen Punkt der Markierung zu schwenken. Füge dazu Folgendes in die Callback-Funktion des Ereignis-Handlers ein:const location = { lat: event.latLng.lat(), lng: event.latLng.lng() }; map.panTo(location);
- Weisen Sie die Klick-Listener zu.
Rufen SieaddPanToMarker()
über den JS API Promise-Handler auf und übergeben Sie Ihre Karte und die Markierungen, um den Code auszuführen und Ihre Klick-Listener zuzuweisen.loader.then(() => { console.log('Maps JS API loaded'); const map = displayMap(); const markers = addMarkers(map); clusterMarkers(map, markers); addPanToMarker(map, markers); });
Gehen Sie nun zum Browser und klicken Sie auf Ihre Markierungen. Sie sollten die Karte automatisch auf den neuesten Punkt schwenken, wenn auf eine Markierung geklickt wird.
Kurz gesagt: In diesem Schritt haben Sie das Ereignissystem der Maps JavaScript API verwendet, um allen Markierungen auf der Karte einen Klick-Listener zuzuweisen, den Breiten- und Längengrad der Markierung aus dem ausgelösten Klickereignis abzurufen und damit die Karte neu zu zentrieren, wenn auf eine Markierung geklickt wird.
Die addPanToMarker()
-Funktion sollte in etwa so aussehen:
function addPanToMarker(map, markers) {
markers = markers.map(marker => {
marker.addListener('click', event => {
const location = { lat: event.latLng.lat(), lng: event.latLng.lng() };
map.panTo(location);
});
});
return markers;
}
Nur noch ein Schritt! Als Nächstes wird die Karte mithilfe der Zeichenfunktionen der Maps JavaScript API weiter verbessert.
10. Auf der Karte zeichnen
Bis jetzt hast du eine Karte von Sydney erstellt, auf der Markierungen für beliebte Reiseziele angezeigt werden und die Nutzerinteraktionen ausführen. Im letzten Schritt dieses Codelabs verwenden Sie die Zeichenfunktionen der Maps JavaScript API, um Ihrer Karte ein zusätzliches nützliches Merkmal hinzuzufügen.
Stellen Sie sich vor, diese Karte wird von Nutzern verwendet, die die Stadt Sydney erkunden möchten. Eine nützliche Funktion ist die Visualisierung eines Umkreises um eine Markierung herum, wenn darauf geklickt wird. So kann der Nutzer auf einfache Weise erkennen, welche anderen Zielanwendungen sich in Gehminuten von der angeklickten Markierung befinden.
Die Maps JavaScript API umfasst eine Reihe von Funktionen zum Zeichnen von Formen auf der Karte, z. B. Quadrate, Polygone, Linien und Kreise. Als Nächstes renderst du einen Kreis, sodass ein 800-Meter-Radius um eine Markierung herum angezeigt wird, wenn darauf geklickt wird.
- Zeichnen Sie mit
google.maps.Circle
einen Kreis.
Mit den Zeichenfunktionen in der Maps JavaScript API hast du viele Möglichkeiten, wie ein gezeichnetes Objekt auf der Karte angezeigt wird. - Zeichnen Sie den Kreis, wenn auf eine Markierung geklickt wird.
Wenn du den Kreis zeichnen möchtest, wenn der Nutzer auf eine Markierung klickt, musst du nur die oben beschriebene FunktiondrawCircle()
aus dem Klick-Listener-Callback inaddPanToMarker()
aufrufen und die Karte und die Position der Markierung übergeben.
Beachten Sie, dass auch eine bedingte Anweisung hinzugefügt wird, diecircle.setMap(null)
aufruft. Dadurch wird der zuvor gerenderte Kreis aus der Karte entfernt, wenn der Nutzer auf eine andere Markierung klickt. Sie gelangen schließlich zu einer Karte mit Kreisen, die angezeigt wird, wenn der Nutzer die Karte erkundet.
IhreaddPanToMarker()
-Funktion sollte in etwa so aussehen:function addPanToMarker(map, markers) { let circle; markers.map(marker => { marker.addListener('click', event => { const location = { lat: event.latLng.lat(), lng: event.latLng.lng() }; map.panTo(location); if (circle) { circle.setMap(null); } circle = drawCircle(map, location); }); }); }
Fertig Klicken Sie im Browser auf eine der Markierungen. Es sollte ein kreisförmiger Radius angezeigt werden:
11. Glückwunsch
Sie haben erfolgreich Ihre erste Webanwendung mit der Google Maps Platform erstellt. Dazu gehörten das Laden der Maps JavaScript API, das Laden einer Karte, das Arbeiten mit Markierungen, das Steuern von bzw. Zeichnen auf der Karte und das Hinzufügen von Nutzerinteraktionen.
Sehen Sie sich das abgeschlossene Projekt im Verzeichnis /solutions
an, um den abgeschlossenen Code zu sehen.
Nächste Schritte
In diesem Codelab wurden die Grundlagen der Maps JavaScript API behandelt. Versuchen Sie anschließend, der Karte einige dieser Funktionen hinzuzufügen:
- Ändern Sie den Kartentyp, sodass Satelliten-, Hybrid- und Geländekarten angezeigt werden.
- Aktivieren Sie lokalisieren, um die Karte in verschiedenen Sprachen zu laden.
- Passen Sie andere Nutzerinteraktionen wie Zoomen und Kartensteuerelemente an.
- Fügen Sie Infofenster hinzu, damit Informationen angezeigt werden, wenn auf Markierungen geklickt wird.
- Sehen Sie sich die zusätzlichen Bibliotheken für die Maps JavaScript API an, die zusätzliche Funktionen wie Places, Zeichnen und Visualisierungen ermöglichen.
Weitere Informationen zum Arbeiten mit der Google Maps Platform im Web finden Sie unter den folgenden Links: