Maps JavaScript API-Anwendung von Version 2 auf Version 3 aktualisieren

Die Maps JavaScript API Version 2 ist seit dem 26. Mai 2021 nicht mehr verfügbar. Aus diesem Grund funktionieren die Karten aus Version 2 Ihrer Website nicht mehr und es werden JavaScript-Fehler zurückgegeben. Wenn Sie weiter Karten auf Ihrer Website verwenden möchten, müssen Sie zu Version 3 der Maps JavaScript API migrieren. Dieser Leitfaden hilft Ihnen dabei.

Übersicht

Jede Anwendung hat einen etwas anderen Migrationsprozess. Es gibt jedoch einige Schritte, die für alle Projekte gelten:

  1. Neuen Schlüssel anfordern Die Maps JavaScript API wird jetzt mit der Google Cloud Console zum Verwalten von Schlüsseln verwendet. Wenn Sie noch einen V2-Schlüssel verwenden, sollten Sie vor Beginn der Migration Ihren neuen API-Schlüssel abrufen.
  2. Aktualisieren Sie Ihr API-Bootstrap. In den meisten Anwendungen wird die Maps JavaScript API Version 3 mit dem folgenden Code geladen:
    <script src="//maps.googleapis.com/maps/api/js?key=YOUR_API_KEY"></script>
    
  3. Aktualisieren Sie Ihren Code. Der Umfang der erforderlichen Änderungen hängt stark von Ihrer Anwendung ab. Zu den häufigsten Änderungen gehören:
    • Verweisen Sie immer auf den Namespace „google.maps“. In Version 3 wird der gesamte Maps JavaScript API-Code im google.maps.*-Namespace und nicht im globalen Namespace gespeichert. Die meisten Objekte wurden im Rahmen dieses Vorgangs ebenfalls umbenannt. Statt GMap2 laden Sie jetzt google.maps.Map.
    • Entfernen Sie alle Verweise auf veraltete Methoden. Es wurden eine Reihe von allgemeinen Hilfsmethoden entfernt, z. B. GDownloadURL und GLog. Ersetzen Sie diese Funktion entweder durch Drittanbieter-Dienstprogrammbibliotheken oder entfernen Sie diese Verweise aus Ihrem Code.
    • Optional: Fügen Sie Ihrem Code Bibliotheken hinzu. Viele Features wurden in Dienstprogrammbibliotheken verlagert, sodass jede Anwendung nur die Teile der API laden muss, die verwendet werden.
    • Optional: Konfigurieren Sie Ihr Projekt für die Verwendung der externen Funktionen von Version 3. Mit den externen Funktionen von Version 3 können Sie Ihren Code mit dem Closure Compiler überprüfen oder die automatische Vervollständigung in Ihrer IDE auslösen. Weitere Informationen finden Sie unter Erweiterte Zusammensetzung und externe Daten.
  4. Testen und wiederholen. An diesem Punkt gibt es noch einiges zu tun. Die gute Nachricht ist jedoch, dass du auf dem Weg zu deiner neuen Maps-Anwendung für Version 3 bist.

Änderungen in Version 3 der Maps JavaScript API

Bevor Sie die Migration planen, sollten Sie sich mit den Unterschieden zwischen Version 2 der Maps JavaScript API und Version 3 vertraut machen. Die neueste Version der Maps JavaScript API wurde von Grund auf neu geschrieben. Der Schwerpunkt liegt dabei auf modernen JavaScript-Programmiertechniken, einer verstärkten Nutzung von Bibliotheken und einer vereinfachten API. Der API wurden viele neue Features hinzugefügt und einige bekannte Features wurden geändert oder sogar entfernt. In diesem Abschnitt werden einige der wichtigsten Unterschiede zwischen den beiden Releases vorgestellt.

Die API v3 umfasst folgende Änderungen:

  • Eine optimierte Kernbibliothek. Viele der ergänzenden Funktionen wurden in Bibliotheken verschoben, wodurch die Lade- und Parsing-Zeiten für die Core API verkürzt werden. So können Karten auf jedem Gerät schnell geladen werden.
  • Verbesserte Leistung verschiedener Funktionen, z. B. Polygon-Rendering und Markierungspositionierung.
  • Ein neuer Ansatz für clientseitige Nutzungslimits, um gemeinsame Adressen besser zu berücksichtigen, die von mobilen Proxys und Unternehmensfirewalls verwendet werden.
  • Mehrere moderne Browser und mobile Browser werden jetzt unterstützt. Internet Explorer 6 wird nicht mehr unterstützt.
  • Viele allgemeine Hilfsklassen (GLog oder GDownloadUrl) wurden entfernt. Es gibt heute viele hervorragende JavaScript-Bibliotheken mit ähnlichen Funktionen, z. B. Closure oder jQuery.
  • Eine HTML5-Implementierung von Street View, die auf allen Mobilgeräten geladen werden kann.
  • Mit benutzerdefinierten Street View-Panoramen und eigenen Fotos können Sie Panoramen von Skipisten, Häusern oder anderen interessanten Orten teilen.
  • Anpassungen für Karten mit benutzerdefinierten Stilen, mit denen Sie die Darstellung von Elementen auf der Basiskarte an Ihren individuellen visuellen Stil anpassen können.
  • Unterstützung mehrerer neuer Dienste wie ElevationService und Distance Matrix
  • Ein verbesserter Routenplanerdienst bietet alternative Routen, Routenoptimierungen (ungefähre Lösungen für das Problem der Vertriebsmitarbeiter von Reisen), Fahrradrouten (mit Fahrradebene), Routen für öffentliche Verkehrsmittel und ziehbare Routen.
  • Ein aktualisiertes Geocoding-Format, das genauere type-Informationen als der accuracy-Wert aus der Geocoding API Version 2 liefert.
  • Unterstützung mehrerer Infofenster auf einer Karte

Upgrade der Anwendung

Ihr neuer Schlüssel

Version 3 der Maps JavaScript API verwendet ein neues Schlüsselsystem. Möglicherweise verwenden Sie bereits einen Schlüssel aus Version 3 für Ihre Anwendung. In diesem Fall ist keine Änderung erforderlich. Um dies zu überprüfen, prüfen Sie die URL, von der aus Sie die Maps JavaScript API laden, auf den Parameter key. Wenn der Schlüssel/Wert mit 'ABQIAA' beginnt, verwenden Sie einen V2-Schlüssel. Wenn Sie einen Schlüssel aus Version 2 haben, müssen Sie im Rahmen der Migration ein Upgrade auf einen Schlüssel mit Version 3 durchführen. Das hat folgende Auswirkungen:

Der Schlüssel wird beim Laden der Maps JavaScript API Version 3 übergeben. Weitere Informationen zum Generieren von API-Schlüsseln

Wenn Sie Google Maps APIs for Work-Kunde sind, verwenden Sie möglicherweise eine Client-ID mit dem Parameter client anstelle des Parameters key. Client-IDs werden weiterhin in Maps JavaScript API Version 3 unterstützt und müssen den Schlüsselaktualisierungsprozess nicht durchlaufen.

API laden

Die erste Änderung, die Sie an Ihrem Code vornehmen müssen, betrifft das Laden der API. In Version 2 wird die Maps JavaScript API über eine Anfrage an http://maps.google.com/maps geladen. Wenn Sie die Maps JavaScript API Version 3 laden, müssen Sie die folgenden Änderungen vornehmen:

  1. API aus //maps.googleapis.com/maps/api/js laden
  2. Entfernen Sie den Parameter file.
  3. Aktualisieren Sie den Parameter key mit Ihrem neuen Schlüssel v3. Kunden von Google Maps APIs for Work sollten den Parameter client verwenden.
  4. Nur Google Maps Platform-Premiumoption: Der Parameter client muss wie im Entwicklerleitfaden für die Google Maps Platform-Premiumoption beschrieben angegeben werden.
  5. Entfernen Sie den Parameter v, um die zuletzt veröffentlichte Version anzufordern, oder ändern Sie den Wert entsprechend dem Schema der Version 3.
  6. Optional: Ersetzen Sie den Parameter hl durch language und behalten Sie seinen Wert bei.
  7. Optional: Fügen Sie den Parameter libraries hinzu, um optionale Bibliotheken zu laden.

Im einfachsten Fall gibt der Bootstrap von Version 3 nur den API-Schlüsselparameter an:

<script src="//maps.googleapis.com/maps/api/js?key=YOUR_API_KEY"></script>

Im folgenden Beispiel wird die neueste Version der Maps JavaScript API Version 2 auf Deutsch angefordert:

<script src="//maps.google.com/maps?file=api&v=2.x&key=YOUR_API_KEY&hl=de"></script>

Das folgende Beispiel ist eine entsprechende Anforderung für v3.

<script src="//maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&language=de"></script>

Einführung des Namespace „google.maps“

Die wohl auffälligste Änderung in der Maps JavaScript API Version 3 ist die Einführung des Namespace google.maps. Die API V2 platziert standardmäßig alle Objekte im globalen Namespace, was zu Namenskonflikten führen kann. In Version 3 befinden sich alle Objekte im Namespace google.maps.

Wenn Sie Ihre Anwendung zu v3 migrieren, müssen Sie Ihren Code ändern, um den neuen Namespace zu nutzen. Leider funktioniert das Suchen nach &quot und das Ersetzen durch "google.maps." nicht vollständig. Es empfiehlt sich jedoch, beim Überprüfen Ihres Codes die entsprechende Faustregel anzuwenden. Im Folgenden finden Sie einige Beispiele für die entsprechenden Klassen in v2 und v3.

v2 v3
GMap2 google.maps.Map
GLatLng google.maps.LatLng
GInfoWindow google.maps.InfoWindow
GMapOptions google.map.MapOptions
G_API_VERSION google.maps.version
GPolyStyleOptions google.maps.PolygonOptions
or google.maps.PolylineOptions

Entfernen von veraltetem Google-Code

Version 3 der Maps JavaScript API weist für die meisten Funktionen in Version 2 Parallelen auf. Einige Klassen werden jedoch nicht mehr unterstützt. Im Rahmen der Migration sollten Sie diese Klassen entweder durch Dienstprogrammbibliotheken von Drittanbietern ersetzen oder diese Verweise aus dem Code entfernen. Es gibt viele hervorragende JavaScript-Bibliotheken mit ähnlichen Funktionen, z. B. Closure oder jQuery.

Die folgenden Klassen haben in der Maps JavaScript API Version 3 keine Parallele:

GBoundsGLanguage
GBrowserIsCompatibleGLayer
GControlGLog
GControlAnchorGMercatorProjection
GControlImplGNavLabelControl
GControlPositionGObliqueMercator
GCopyrightGOverlay
GCopyrightCollectionGPhotoSpec
GDownloadUrlGPolyEditingOptions
GDraggableObjectGScreenOverlay
GDraggableObjectOptionsGStreetviewFeatures
GFactualGeocodeCacheGStreetviewLocation
GGeoAddressAccuracyGStreetviewOverlay
GGeocodeCacheGStreetviewUserPhotosOptions
GGoogleBarGTileLayerOptions
GGoogleBarAdsOptionsGTileLayerOverlayOptions
GGoogleBarLinkTargetGTrafficOverlayOptions
GGoogleBarListingTypesGUnload
GGoogleBarOptionsGXml
GGoogleBarResultListGXmlHttp
GInfoWindowTabGXslt
GKeyboardHandler

Code im Vergleich

Vergleichen wir zwei eher einfache Anwendungen, die mit den APIs von Version 2 und Version 3 geschrieben wurden.

<!DOCTYPE html>
<html>
  <head>
    <script src="//maps.google.com/maps?file=api&v=2&key=YOUR_API_KEY"></script>
    <style>
      html, body, #map { height: 100%; margin: 0; }
    </style>
    <script>
    function initialize() {
      if (GBrowserIsCompatible()) {
        var map = new GMap2(
            document.getElementById('map'));
        map.setCenter(new GLatLng(37.4419, -122.1419), 13);
        map.setUIToDefault();

        map.addOverlay(new GMarker(new GLatLng(37.4419, -122.1419)));

      }
    }
    </script>
  </head>
  <body onload="initialize()" onunload="GUnload()">
    <div id="map"></div>
  </body>
</html>
    
<!DOCTYPE html>
<html>
  <head>
    <script src="//maps.googleapis.com/maps/api/js?key=YOUR_API_KEY"></script>
    <style>
      html, body, #map { height: 100%; margin: 0; }
    </style>
    <script>
    function initialize() {
      var map = new google.maps.Map(
        document.getElementById('map'), {
          center: new google.maps.LatLng(37.4419, -122.1419),
          zoom: 13,
          mapTypeId: google.maps.MapTypeId.ROADMAP
      });

      var marker = new google.maps.Marker({
            position: new google.maps.LatLng(37.4419, -122.1419),
            map: map
      });

    }
    google.maps.event.addDomListener(window, 'load', initialize);
    </script>
  </head>
  <body>
    <div id="map"></div>
  </body>
</html>
    

Wie Sie sehen, gibt es mehrere Unterschiede zwischen den beiden Anwendungen. Wichtige Änderungen sind:

  • Die Adresse, über die die API geladen wird, wurde geändert.
  • Die Methoden GBrowserIsCompatible() und GUnload() sind in v3 nicht mehr erforderlich und wurden aus der API entfernt.
  • Das Objekt GMap2 wird durch google.maps.Map als zentrales Objekt in der API ersetzt.
  • Eigenschaften werden jetzt über die Optionenklassen geladen. Im obigen Beispiel haben wir die drei Properties festgelegt, die zum Laden einer Karte erforderlich sind – center, zoom und mapTypeId – über ein Inline-Objekt MapOptions.
  • Die Standardbenutzeroberfläche ist in v3 aktiviert. Wenn du dies deaktivieren möchtest, setze die Property disableDefaultUI im Objekt MapOptions auf „true“.

Zusammenfassung

An dieser Stelle werden Ihnen einige der wichtigsten Punkte bei der Migration von Version 2 zu Version 3 der Maps JavaScript API vorgestellt. Möglicherweise gibt es weitere Informationen, die jedoch von Ihrer Anwendung abhängen. In den folgenden Abschnitten finden Sie eine Anleitung zur Migration für bestimmte Fälle, die auftreten können. Außerdem gibt es einige Ressourcen, die während des Upgrades hilfreich sein können.

Wenn du Probleme oder Fragen zu diesem Artikel hast, klicke oben auf der Seite auf den Link Feedback senden.

Ausführliche Referenz

Dieser Abschnitt enthält einen detaillierten Vergleich der beliebtesten Funktionen von Version 2 und 3 der Maps JavaScript API. Jeder Abschnitt der Referenz ist so konzipiert, dass er einzeln gelesen wird. Wir empfehlen, diese Referenz nicht vollständig zu lesen. Nutzen Sie stattdessen dieses Material, um Ihre Migration von Fall zu Fall zu unterstützen.

  • Ereignisse: Ereignisse registrieren und behandeln
  • Steuerelemente: Mit den Steuerelementen lassen sich die auf der Karte angezeigten Navigationsbedienelemente bearbeiten.
  • Overlays: Objekte auf der Karte hinzufügen und bearbeiten.
  • Kartentypen: e Kacheln, aus denen die Basiskarte besteht
  • Ebenen: Inhalte als Gruppe hinzufügen und bearbeiten, z. B. KML- oder Verkehrslagenebenen.
  • Dienste: Geocoding-, Routen- oder Street View-Dienste von Google

Ereignisse

Das Ereignismodell für die Maps JavaScript API Version 3 ähnelt dem, das in Version 2 verwendet wurde, auch wenn hinter den Kulissen viel verändert wurde.

Steuerelemente

Die Maps JavaScript API enthält UI-Steuerelemente, über die Nutzer mit Ihrer Karte interagieren können. Mit der API können Sie die Darstellung dieser Steuerelemente anpassen.

Overlays

Overlays spiegeln Objekte wider, die Sie der Karte hinzufügen, um Punkte, Linien, Bereiche oder Objektsammlungen zu kennzeichnen.

Kartentypen

Die in v2 und v3 verfügbaren Kartentypen unterscheiden sich geringfügig, aber alle grundlegenden Kartentypen sind in beiden Versionen der API verfügbar. In v2 werden standardmäßig die standardmäßigen Straßenkartenkacheln verwendet. In Version 3 ist beim Erstellen eines google.maps.Map-Objekts jedoch ein bestimmter Kartentyp erforderlich.

Ebenen

Ebenen sind Objekte auf der Karte, die aus einem oder mehreren Overlays bestehen. Sie können als eine Einheit bearbeitet werden und stellen im Allgemeinen Sammlungen von Objekten dar.

Dienste