Places Library

Übersicht

Mit den Funktionen der Places Library in der Maps JavaScript API kann in Ihrer Anwendung nach Orten (in der API als Einrichtungen, geografische Standorte oder POIs definiert) gesucht werden, die sich in einem festgelegten Gebiet befinden sind, z. B. innerhalb der Grenzen einer Karte oder um einen festen Punkt.

Die Places API bietet eine Funktion zur automatischen Vervollständigung, mit der Sie in Ihren Anwendungen dasselbe Suchverhalten wie im Google Maps-Suchfeld zur Verfügung stellen können. Sobald ein Nutzer beginnt, eine Adresse einzugeben, wird durch die automatische Vervollständigung der Rest ausgefüllt. Weitere Informationen finden Sie in der Dokumentation zur automatischen Vervollständigung.

Erste Schritte

Wenn Sie nicht mit der Maps JavaScript API oder JavaScript vertraut sind, sollten Sie sich zuerst über JavaScript informieren und den Artikel API-Schlüssel anfordern lesen.

APIs aktivieren

Bevor Sie die Places Library in der Maps JavaScript API verwenden können, müssen Sie die Places API in der Google Cloud Console aktivieren, und zwar in dem Projekt, das Sie für die Maps JavaScript API eingerichtet haben.

So öffnen Sie die Liste der aktivierten APIs:

  1. Rufen Sie die Google Cloud Console auf.
  2. Klicken Sie auf die Schaltfläche Projekt auswählen, wählen Sie das Projekt aus, das Sie für die Maps JavaScript API eingerichtet haben, und klicken Sie dann auf Öffnen.
  3. Suchen Sie im Dashboard in der Liste der APIs nach Places API.
  4. Wenn sich die Places API in der Liste befindet, ist sie bereits aktiviert. Ist die API nicht aufgeführt, aktivieren Sie sie:
    1. Wählen Sie oben auf der Seite APIS UND DIENSTE AKTIVIEREN aus, damit der Tab Bibliothek zu sehen ist. Sie haben auch die Möglichkeit, im Menü auf der linken Seite Bibliothek auszuwählen.
    2. Suchen Sie nach der Places API und wählen Sie sie dann in der Ergebnisliste aus.
    3. Klicken Sie auf AKTIVIEREN. Die Places API wird dann in der Liste der APIs auf dem Dashboard angezeigt.

Bibliothek laden

Der Places-Dienst ist eine eigenständige Bibliothek, die unabhängig vom Code der Maps JavaScript API ist. Damit Sie die Funktionen der Bibliothek nutzen können, müssen Sie sie zuerst mithilfe des libraries-Parameters in der Bootstrap-URL der Maps API laden:

<script async
    src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&loading=async&libraries=places&callback=initMap">
</script>

Weitere Informationen finden Sie in der Übersicht der Bibliotheken.

Places API in die Liste der API-Einschränkungen für API-Schlüssel aufnehmen

Wenn für Ihre Schlüssel API-Einschränkungen gelten, wird die Nutzung des API-Schlüssels auf eine oder mehrere APIs oder SDKs beschränkt. Anfragen an APIs oder SDKs, die mit dem API-Schlüssel verknüpft sind, werden verarbeitet. Anfragen an APIs und SDKs, die nicht mit dem API-Schlüssel verknüpft sind, schlagen hingegen fehl. So schränken Sie einen API-Schlüssel für die Nutzung mit der Places Library, Maps JavaScript API ein:
  1. Rufen Sie die Google Cloud Console auf.
  2. Klicken Sie auf das Drop-down-Menü für Projekte und wählen Sie das Projekt aus, das den API-Schlüssel enthält, der geschützt werden soll.
  3. Klicken Sie auf die Menüschaltfläche  und wählen Sie Google Maps Platform > Anmeldedaten aus.
  4. Klicken Sie auf der Seite Anmeldedaten auf den Namen des zu sichernden API-Schlüssels.
  5. Legen Sie auf der Seite API-Schlüssel einschränken und umbenennen die Einschränkungen fest:
    • API-Einschränkungen
      • Wählen Sie Schlüssel einschränken aus.
      • Klicken Sie auf APIs auswählen und wählen Sie dann sowohl Maps JavaScript API als auch Places API aus.
        Wenn eine der APIs nicht aufgeführt ist, müssen Sie sie zuerst aktivieren.
  6. Klicken Sie auf SPEICHERN.

Nutzungslimits und Richtlinien

Kontingente

Für Places Library und Places API gilt ein gemeinsames Nutzungskontingent, wie in der Dokumentation zu Nutzungslimits für die Places API beschrieben.

Richtlinien

Die Nutzung der Places Library in der Maps JavaScript API muss den Richtlinien für die Places API entsprechen.

Place Search-Anfragen

Mit dem Places-Dienst können Sie folgende Arten von Suchanfragen ausführen:

  • Bei Anfragen vom Typ Find Place from Query wird basierend auf einer Textanfrage ein Ort zurückgegeben, z. B. der Name oder die Adresse eines Ortes.
  • Bei Anfragen vom Typ Find Place from Phone wird ein Ort basierend auf einer Telefonnummer zurückgegeben.
  • Bei Anfragen vom Typ Nearby Search wird basierend auf dem Standort des Nutzers eine Liste mit Orten in der Nähe zurückgegeben.
  • Bei Anfragen vom Typ Text Search wird basierend auf einem Suchstring wie „Pizza“ eine Liste mit Orten in der Nähe zurückgegeben.
  • Bei Anfragen vom Typ Place Details werden ausführliche Informationen zu einem bestimmten Ort zurückgegeben, einschließlich Rezensionen von Nutzern.

Die zurückgegebenen Daten können Einrichtungen, wie Restaurants, Geschäfte und Büros, oder auch Geocoding-Ergebnisse, wie Adressen, politische Verwaltungseinheiten, z. B. Städte und Gemeinden, oder andere POIs umfassen.

„Find Place“-Anfragen

Mit einer „Find Place“-Anfrage können Sie mit Text oder einer Telefonnummer nach einem Ort suchen. Es gibt zwei Arten von Anfragen vom Typ „Find Place“:

Find Place from Query

Bei Anfragen vom Typ „Find Place from Query“ geben Sie Text ein und es wird ein Ort zurückgegeben. Sie können beliebige Daten zu einem Ort eingeben, z. B. den Namen oder die Adresse eines Unternehmens. Wenn Sie eine Anfrage vom Typ „Find Place from Query“ stellen möchten, rufen Sie die Methode findPlaceFromQuery() von PlacesService auf. Verwenden Sie dazu folgende Parameter:

  • query (erforderlich): der Textstring, nach dem gesucht werden soll, z. B. „Restaurant“ oder „Hauptstraße 60“. Der Textstring muss dabei der Name oder die Adresse eines Ortes oder eine Kategorie der Einrichtung sein. Alle anderen Arten von Eingaben führen vermutlich zu einem Fehler und die zurückgegebenen Ergebnisse sind möglicherweise ungültig. Über die Places API werden mögliche Übereinstimmungen basierend auf dem String zurückgegeben, die nach erkannter Relevanz sortiert werden.
  • fields (erforderlich): mindestens ein Feld, mit dem die Arten der zurückgegebenen Ortsdaten festgelegt werden.
  • locationBias (optional): Koordinaten, mit denen der Suchbereich definiert wird. Dabei sind folgende Angaben zulässig:
    • Eine Kombination aus Breiten-/Längenkoordinaten, angegeben als LatLngLiteral oder LatLng-Objekt
    • Rechteckige Begrenzungen (zwei Paare aus Breiten-/Längenkoordinaten oder ein LatLngBounds-Objekt)
    • Ein Radius (in Metern), dessen Mittelpunkt über Längen- und Breitengrade definiert wird

Außerdem muss eine Callback-Methode an findPlaceFromQuery() übergeben werden, damit das Ergebnisobjekt und die google.maps.places.PlacesServiceStatus-Antwort verarbeitet werden können.

Im folgenden Beispiel sehen Sie einen Aufruf vom Typ findPlaceFromQuery(), bei dem nach dem „Museum of Contemporary Art Australia“ gesucht wird und der die Felder name und geometry enthält.

var map;
var service;
var infowindow;

function initMap() {
  var sydney = new google.maps.LatLng(-33.867, 151.195);

  infowindow = new google.maps.InfoWindow();

  map = new google.maps.Map(
      document.getElementById('map'), {center: sydney, zoom: 15});

  var request = {
    query: 'Museum of Contemporary Art Australia',
    fields: ['name', 'geometry'],
  };

  var service = new google.maps.places.PlacesService(map);

  service.findPlaceFromQuery(request, function(results, status) {
    if (status === google.maps.places.PlacesServiceStatus.OK) {
      for (var i = 0; i < results.length; i++) {
        createMarker(results[i]);
      }
      map.setCenter(results[0].geometry.location);
    }
  });
}
Beispiel ansehen

Find Place from Phone Number

Bei Anfragen vom Typ „Find Place from Phone Number“ wird eine Telefonnummer eingegeben und ein Ort zurückgegeben. Wenn Sie eine Anfrage vom Typ „Find Place from Phone Number“ stellen möchten, müssen Sie die Methode findPlaceFromPhoneNumber() von PlacesService aufrufen. Verwenden Sie dazu folgende Parameter:

  • phoneNumber (erforderlich): eine Telefonnummer im Format E.164.
  • fields (erforderlich): mindestens ein Feld, mit dem die Arten der zurückgegebenen Ortsdaten festgelegt werden.
  • locationBias (optional): Koordinaten, mit denen der Suchbereich definiert wird. Dabei sind folgende Angaben zulässig:
    • Eine Kombination aus Breiten-/Längenkoordinaten, angegeben als LatLngLiteral oder LatLng-Objekt
    • Rechteckige Begrenzungen (vier Punkte, definiert über Breiten-/Längenkoordinaten, oder ein LatLngBounds-Objekt)
    • Ein Radius (in Metern), dessen Mittelpunkt über Längen- und Breitengrade definiert wird

Außerdem muss eine Callback-Methode an findPlaceFromPhoneNumber() übergeben werden, damit das Ergebnisobjekt und die google.maps.places.PlacesServiceStatus-Antwort verarbeitet werden können.

Felder (Methoden vom Typ „Find Place“)

Verwenden Sie den Parameter fields, um ein Array von Ortsdatentypen festzulegen, die zurückgegeben werden sollen, z. B. fields: ['formatted_address', 'opening_hours', 'geometry']. Verwenden Sie bei zusammengesetzten Werten einen Punkt, z. B. opening_hours.weekday_text.

Die Felder entsprechen „Place Search“-Ergebnissen und sind in drei Abrechnungskategorien unterteilt: „Basic“, „Contact“ und „Atmosphere“. Für Felder der Kategorie „Basic“ gilt der Basispreis und es fallen keine zusätzlichen Kosten an. Für Felder der Kategorie „Contact“ und „Atmosphere“ werden höhere Kosten abgerechnet. Weitere Informationen finden Sie in der Preisübersicht. Zuordnungen (html_attributions) werden bei jedem Aufruf zurückgegeben, unabhängig davon, ob das Feld angefordert wurde.

Basic

Die Kategorie „Basic“ umfasst folgende Felder:
business_status, formatted_address, geometry, icon,icon_mask_base_uri, icon_background_color, name, permanently_closed (eingestellt), photos, place_id, plus_code, types

Contact

Die Kategorie „Contact“ umfasst folgendes Feld: opening_hours
(in der Places Library in Maps JavaScript API eingestellt. Nutzen Sie eine „Place Details“-Anfrage, um Ergebnisse vom Typ opening_hours zu erhalten.)

Atmosphere

Die Kategorie „Atmosphere“ umfasst folgende Felder: price_level, rating, user_ratings_total

Bei den Methoden findPlaceFromQuery() und findPlaceFromPhoneNumber() werden dieselben Felder in den jeweiligen Antworten zurückgeben.

Standortgewichtung festlegen (Methoden vom Typ „Find Place“)

Verwenden Sie den Parameter locationBias, damit Ergebnisse von Anfragen vom Typ „Find Place“ an einem bestimmten Ort bevorzugt werden. Sie können locationBias folgendermaßen festlegen:

Ergebnisse für einen bestimmten Ort höher gewichten:

locationBias: {lat: 37.402105, lng: -122.081974}

Einen rechteckigen Bereich für die Suche definieren:

locationBias: {north: 37.41, south: 37.40, east: -122.08, west: -122.09}

Sie können auch LatLngBounds verwenden.

Einen Radius für die Suche (in Metern) definieren, dessen Mittelpunkt auf einen bestimmten Bereich festgelegt ist:

locationBias: {radius: 100, center: {lat: 37.402105, lng: -122.081974}}

„Nearby Search“-Anfragen

Mit einer Anfrage vom Typ „Nearby Search“ können Sie anhand eines Suchbegriffs oder Typs nach Orten innerhalb eines bestimmten Bereichs suchen. Eine solche Anfrage muss immer einen Standort enthalten, der sich in einer der beiden folgenden Formen angeben lässt:

  • als LatLngBounds
  • als Kreisfläche, die über eine Kombination aus der Eigenschaft location (wobei der Mittelpunkt des Kreises als LatLng-Objekt angegeben wird) und einem in Metern angegebenen Radius definiert wird

Eine Suche vom Typ „Places Nearby“ wird über einen Aufruf an die nearbySearch()-Methode von PlacesService initiiert. Zurückgegeben wird ein Array von PlaceResult-Objekten. Die Methode nearbySearch() ersetzt ab Version 3.9 die Methode search().

service = new google.maps.places.PlacesService(map);
service.nearbySearch(request, callback);

Dabei wird eine Anfrage mit folgenden Feldern verwendet:

  • Entweder:
    • bounds, das ein google.maps.LatLngBounds-Objekt sein muss, mit dem der rechteckige Suchbereich definiert wird. Der maximal unterstützte diagonale Abstand für den Begrenzungsbereich beträgt etwa 100.000 Meter.
    • ein location und ein radius, wobei Ersteres ein google.maps.LatLng-Objekt und Letzteres eine einfache Ganzzahl ist, die dem Radius des Kreises in Metern entspricht. Der maximal zulässige Radius beträgt 50.000 Meter. Wenn rankBy auf „DISTANCE“ festgelegt ist, müssen Sie einen location angeben. radius und bounds können in diesem Fall nicht festgelegt werden.
  • keyword (optional): ein Begriff, der mit allen verfügbaren Feldern abgeglichen wird, einschließlich, aber nicht beschränkt auf Name, Typ und Adresse sowie Rezension von Kunden und sonstigen Drittanbieterinhalt
  • minPriceLevel und maxPriceLevel (optional): Damit werden die Ergebnisse auf Orte innerhalb des angegebenen Bereichs eingeschränkt. Werte von 0 (am preisgünstigsten) bis einschließlich 4 (am teuersten) sind zulässig.
  • name (eingestellt), entspricht keyword. Die Werte in diesem Feld werden mit den Werten im Feld keyword kombiniert und als Teil desselben Suchstrings übergeben.
  • openNow (optional): ein boolescher Wert, mit dem angegeben wird, dass der Places-Dienst nur die Orte zurückgeben soll, die beim Senden der Anfrage geöffnet haben. Wenn Sie diesen Parameter in Ihre Anfrage einbinden, werden keine Orte zurückgegeben, für die in der Google Places-Datenbank keine Öffnungszeiten hinterlegt sind. Wenn Sie openNow auf false festlegen, hat das keine Auswirkungen.
  • rankBy (optional): definiert die Reihenfolge, in der die Ergebnisse aufgelistet werden. Folgende Werte sind möglich:
    • google.maps.places.RankBy.PROMINENCE (Standard): Mit dieser Option werden die Ergebnisse nach ihrer Wichtigkeit sortiert. In der Liste werden relevante Orte innerhalb des eingestellten Radius gegenüber Orten in der Nähe bevorzugt, die übereinstimmen, aber weniger relevant sind. Die Relevanz kann durch die Bewertung eines Ortes im Index von Google, die weltweite Bekanntheit und weitere Faktoren beeinflusst werden. Wenn google.maps.places.RankBy.PROMINENCE festgelegt wird, ist der Parameter radius erforderlich.
    • google.maps.places.RankBy.DISTANCE: Bei dieser Option werden die Ergebnisse in aufsteigender Reihenfolge nach ihrer Entfernung vom angegebenen Wert für location (erforderlich) sortiert. Sie können keine benutzerdefinierten Werte für bounds und/oder radius festlegen, wenn Sie RankBy.DISTANCE verwenden. Wenn Sie RankBy.DISTANCE nutzen, müssen Sie mindestens einen der folgenden Werte festlegen: keyword, name oder type.
  • type: Damit werden die Ergebnisse auf Orte beschränkt, die dem angegebenen Typ entsprechen. Es kann nur ein Typ festgelegt werden. Werden mehrere Typen angegeben, wird nur der erste berücksichtigt. Sehen Sie sich die Liste der unterstützten Typen an.

Außerdem muss eine Callback-Methode an nearbySearch() übergeben werden, damit das Ergebnisobjekt und die google.maps.places.PlacesServiceStatus-Antwort verarbeitet werden können.

var map;
var service;
var infowindow;

function initialize() {
  var pyrmont = new google.maps.LatLng(-33.8665433,151.1956316);

  map = new google.maps.Map(document.getElementById('map'), {
      center: pyrmont,
      zoom: 15
    });

  var request = {
    location: pyrmont,
    radius: '500',
    type: ['restaurant']
  };

  service = new google.maps.places.PlacesService(map);
  service.nearbySearch(request, callback);
}

function callback(results, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
    for (var i = 0; i < results.length; i++) {
      createMarker(results[i]);
    }
  }
}

Beispiel ansehen

„Text Search“-Anfragen

Der Dienst „Text Search“ von Google Places ist ein Webdienst, mit dem auf Grundlage eines Strings, z. B. „Pizza in München“ oder „Schuhgeschäfte in der Nähe von Hamburg“ Informationen zu verschiedenen Orten zurückgegeben werden. Über den Dienst erhalten Sie eine Liste von Orten, die dem Textstring entsprechen und ggf. mit der festgelegten Standortgewichtung übereinstimmen. Die Antwort der Suche enthält eine Liste mit Orten. Sie können eine „Place Details“-Anfrage senden, um weitere Informationen zu den zurückgegebenen Orten zu erhalten.

Anfragen vom Typ „Text Search“ werden mit einem Aufruf der Methode textSearch() von PlacesService initiiert.

service = new google.maps.places.PlacesService(map);
service.textSearch(request, callback);

Dabei wird eine Anfrage mit folgenden Feldern verwendet:

  • query (erforderlich): der Textstring, nach dem gesucht werden soll, z. B. „Restaurant“ oder „Hauptstraße 60“. Der Textstring muss dabei der Name oder die Adresse eines Ortes oder die Art eines Betriebes oder Unternehmens sein. Alle anderen Arten von Eingaben führen vermutlich zu einem Fehler und die zurückgegebenen Ergebnisse sind möglicherweise ungültig. Über den Places-Dienst werden mögliche Übereinstimmungen basierend auf dem String zurückgegeben, die nach erkannter Relevanz sortiert werden. Dieser Parameter ist optional, wenn auch der Parameter type in der Suchanfrage verwendet wird.
  • Optional:
    • openNow: ein boolescher Wert, mit dem angegeben wird, dass der Places-Dienst nur die Orte zurückgeben soll, die beim Senden der Anfrage geöffnet haben. Wenn Sie diesen Parameter in Ihre Anfrage einbinden, werden keine Orte zurückgegeben, für die in der Google Places-Datenbank keine Öffnungszeiten hinterlegt sind. Wenn Sie openNow auf false festlegen, hat das keine Auswirkungen.
    • minPriceLevel und maxPriceLevel: Damit werden die Ergebnisse auf Orte innerhalb des angegebenen Bereichs eingeschränkt. Werte von 0 (am preisgünstigsten) bis einschließlich 4 (am teuersten) sind zulässig.
    • Entweder:
      • bounds, das ein google.maps.LatLngBounds-Objekt sein muss, mit dem der rechteckige Suchbereich definiert wird. Der maximal unterstützte diagonale Abstand für den Begrenzungsbereich beträgt etwa 100.000 Meter.
      • location und radius: Wenn Sie die Parameter location und radius weitergeben, können Sie die Ergebnisse zugunsten eines festgelegten Kreises gewichten. Dadurch werden vom Places-Dienst vorzugsweise Ergebnisse für Orte angezeigt, die sich innerhalb dieses Kreises befinden. Ergebnisse außerhalb dieses Bereichs können aber trotzdem angezeigt werden. Für den Standort wird ein google.maps.LatLng-Objekt und für den Radius eine einfache Ganzzahl verwendet, die dem Radius des Kreises in Metern entspricht. Der maximal zulässige Radius beträgt 50.000 Meter.
    • type: Damit werden die Ergebnisse auf Orte eingeschränkt, die dem angegebenen Typ entsprechen. Es kann nur ein Typ festgelegt werden. Werden mehrere Typen angegeben, wird nur der erste berücksichtigt. Sehen Sie sich die Liste der unterstützten Typen an.

Außerdem muss eine Callback-Methode an textSearch() übergeben werden, damit das Ergebnisobjekt und die google.maps.places.PlacesServiceStatus-Antwort verarbeitet werden können

var map;
var service;
var infowindow;

function initialize() {
  var pyrmont = new google.maps.LatLng(-33.8665433,151.1956316);

  map = new google.maps.Map(document.getElementById('map'), {
      center: pyrmont,
      zoom: 15
    });

  var request = {
    location: pyrmont,
    radius: '500',
    query: 'restaurant'
  };

  service = new google.maps.places.PlacesService(map);
  service.textSearch(request, callback);
}

function callback(results, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
    for (var i = 0; i < results.length; i++) {
      var place = results[i];
      createMarker(results[i]);
    }
  }
}

Suchergebnisse

Statuscodes

Das PlacesServiceStatus-Antwortobjekt enthält den Status der Anfrage und evtl. Debugging-Informationen, mit deren Hilfe Sie herausfinden können, warum die Ortsanfrage zu Fehlern geführt hat. Mögliche Statuswerte sind:

  • INVALID_REQUEST: Die Anfrage war ungültig.
  • OK: Die Antwort enthält ein gültiges Ergebnis.
  • OVER_QUERY_LIMIT: Das Anfragenkontingent für die Webseite wurde überschritten.
  • REQUEST_DENIED: Für die Webseite kann der PlacesService nicht genutzt werden.
  • UNKNOWN_ERROR: Die PlacesService-Anfrage konnte aufgrund eines Serverfehlers nicht verarbeitet werden. Die Anfrage ist möglicherweise erfolgreich, wenn Sie sie noch einmal ausführen.
  • ZERO_RESULTS: Für diese Anfrage wurde kein Ergebnis gefunden.

„Place Search“-Ergebnisse

Mit den Funktionen findPlace(), nearbySearch() und textSearch() wird ein Array von PlaceResult-Objekten zurückgegeben.

Jedes PlaceResult-Objekt kann die folgenden Attribute enthalten:

  • business_status: Damit wird der Öffnungsstatus des Ortes angegeben, sofern es sich um ein Unternehmen handelt. Das Attribut kann einen der folgenden Werte annehmen:
    • OPERATIONAL
    • CLOSED_TEMPORARILY
    • CLOSED_PERMANENTLY
    Wenn keine Daten vorhanden sind, wird für business_status kein Wert zurückgegeben.
  • formatted_address ist ein String, der die Adresse dieses Ortes in visuell lesbarer Form enthält. Das Attribut formatted_address wird nur bei einer Text Search-Anfrage zurückgegeben.

    Diese Adresse stimmt häufig mit der Postanschrift überein. In einigen Ländern, z. B. dem Vereinigten Königreich, ist die Weitergabe echter Postanschriften aufgrund von Lizenzeinschränkungen nicht zulässig.

    Die formatierte Adresse besteht aus einer oder mehreren Adresskomponenten. Die Adresse „111 8th Avenue, New York, NY“ besteht z. B. aus den folgenden Komponenten: „111“ (Hausnummer), „8th Avenue“ (Straße), „New York“ (Stadt) und „NY“ (US-Bundesstaat).

    Wir raten davon ab, die formatierte Adresse programmatisch zu parsen. Verwenden Sie stattdessen die einzelnen Adresskomponenten, die zusätzlich zur formatierten Adresse in der API-Antwort enthalten sind.

  • geometry: die geometrischen Daten eines Ortes. Dazu zählen:
    • location: Damit werden der Breiten- und der Längengrad des Ortes angegeben.
    • viewport: Damit wird der bevorzugte Darstellungsbereich auf der Karte beim Anzeigen des Ortes festgelegt.
  • permanently_closed (eingestellt): Das ist ein boolescher Wert, mit dem angegeben wird, ob der Ort dauerhaft oder zeitweise (Wert: true) geschlossen ist. Wir raten davon ab, permanently_closed zu verwenden. Nutzen Sie stattdessen business_status, um den Öffnungsstatus von Unternehmen abzurufen.
  • plus_code (siehe Open Location Code und Plus Codes) ist ein codierter Verweis auf den Standort, der sich aus den Koordinaten (Breiten- und Längengrad) ableiten lässt und einen Bereich definiert: 1/8.000stel eines Grades mal 1/8.000stel eines Grades (ca. 14 m × 14 m am Äquator) oder kleiner. Plus Codes können als Ersatz für Adressen verwendet werden, wenn keine Adressen vorhanden sind, z. B. wenn Gebäude keine Hausnummern oder Straßen keine Namen haben.

    Der Plus Code wird als globaler oder als zusammengesetzter Code formatiert:

    • global_code besteht aus einem vierstelligen Code für das Gebiet und einem mindestens sechsstelligen lokalen Code (849VCWC8+R9).
    • compound_code ist ein mindestens sechsstelliger lokaler Code mit einem expliziten Ort (CWC8+R9 Mountain View, CA, USA). Wir raten davon ab, diesen Code programmatisch zu parsen.
    Normalerweise wird sowohl der globale als auch der zusammengesetzte Code zurückgegeben. Wenn der ausgegebene Ort abgelegen ist und sich etwa im Meer oder in der Wüste befindet, wird vermutlich nur der globale Code zurückgegeben.
  • html_attributions: ein Array mit Zuordnungen, die mit den Suchergebnissen angezeigt werden sollten. Jeder Eintrag im Array enthält den HTML-Text für eine einzelne Zuordnung. Hinweis: Das ist eine Zusammenfassung aller Zuordnungen für die gesamte Suchantwort. Alle PlaceResult-Objekte in der Antwort enthalten daher identische Zuordnungslisten.
  • icon gibt die URL für ein farbiges PNG-Symbol mit einer Größe von 71 × 71 px zurück.
  • icon_mask_base_uri gibt die Basis-URL eines nicht farbigen Symbols ohne die Erweiterung „SVG“ oder „PNG“ zurück.
  • icon_background_color gibt den standardmäßigen Hex-Farbcode für die Kategorie des Ortes zurück.
  • name gibt den Namen des Ortes zurück.
  • opening_hours kann die folgenden Informationen enthalten:
    • open_now ist ein boolescher Wert, der angibt, ob der Ort derzeit geöffnet ist. In der Places Library in der Maps JavaScript API ist dieser Wert eingestellt. Verwenden Sie stattdessen utc_offset_minutes.
  • place_id ist eine ID in Textform, die einen Ort eindeutig definiert. Wenn Sie Informationen zum Ort abrufen möchten, geben Sie diese ID in der „Place Details“-Anfrage weiter. Weitere Informationen dazu, wie Sie Verweise auf Orte mit einer Orts-ID erstellen
  • rating enthält die Bewertung des Ortes. Sie beruht auf aggregierten Nutzerrezensionen und liegt zwischen 0,0 und 5,0.
  • types ist ein Array von Typen für diesen Ort (z. B. ["political", "locality"] oder ["restaurant", "lodging"]). Dieses Array kann mehrere Werte enthalten oder leer sein. Neue Werte können ohne vorherige Ankündigung eingeführt werden. Sehen Sie sich die Liste der unterstützten Typen an.
  • vicinity ist eine vereinfachte Adresse des Ortes, einschließlich Straße, Hausnummer und Verwaltungseinheit, aber ohne Provinz/Bundesland, Postleitzahl oder Land. Die Google-Niederlassung in Sydney, Australien, hat z. B. den vicinity-Wert 5/48 Pirrama Road, Pyrmont.

Weitere Ergebnisse aufrufen

Standardmäßig werden bei jeder „Place Search“-Anfrage bis zu 20 Ergebnisse zurückgegeben. Für jede Suche können jedoch bis zu 60 Ergebnisse zurückgegeben werden, die auf drei Seiten angezeigt werden. Zusätzliche Seiten sind über das PlaceSearchPagination-Objekt verfügbar. Wenn Sie weitere Seiten aufrufen möchten, muss das Objekt PlaceSearchPagination über eine Callback-Funktion erfasst werden. Das Objekt PlaceSearchPagination ist so definiert:

  • hasNextPage: ein boolesches Attribut, mit dem angegeben wird, ob weitere Ergebnisse verfügbar sind. true gibt an, dass es eine weitere Seite mit Ergebnissen gibt.
  • nextPage(): eine Funktion, mit der die nächste Ergebnisgruppe zurückgegeben wird. Nach dem Ausführen einer Suche müssen Sie 2 Sekunden warten, bevor die nächste Ergebnisseite verfügbar ist.

Rufen Sie nextPage auf, um den nächsten Satz Ergebnisse zu erhalten. Jede einzelne Ergebnisseite muss der Reihe nach angezeigt werden. In Bezug auf die geltenden Nutzungslimits wird jede Suche wie eine einzelne Anfrage gezählt.

Das folgende Beispiel zeigt, wie Sie die Callback-Funktion ändern können, um das Objekt PlaceSearchPagination zu erfassen, sodass sich mehrere Suchanfragen stellen lassen.

TypeScript

// This example requires the Places library. Include the libraries=places
// parameter when you first load the API. For example:
// <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places">

function initMap(): void {
  // Create the map.
  const pyrmont = { lat: -33.866, lng: 151.196 };
  const map = new google.maps.Map(
    document.getElementById("map") as HTMLElement,
    {
      center: pyrmont,
      zoom: 17,
      mapId: "8d193001f940fde3",
    } as google.maps.MapOptions
  );

  // Create the places service.
  const service = new google.maps.places.PlacesService(map);
  let getNextPage: () => void | false;
  const moreButton = document.getElementById("more") as HTMLButtonElement;

  moreButton.onclick = function () {
    moreButton.disabled = true;

    if (getNextPage) {
      getNextPage();
    }
  };

  // Perform a nearby search.
  service.nearbySearch(
    { location: pyrmont, radius: 500, type: "store" },
    (
      results: google.maps.places.PlaceResult[] | null,
      status: google.maps.places.PlacesServiceStatus,
      pagination: google.maps.places.PlaceSearchPagination | null
    ) => {
      if (status !== "OK" || !results) return;

      addPlaces(results, map);
      moreButton.disabled = !pagination || !pagination.hasNextPage;

      if (pagination && pagination.hasNextPage) {
        getNextPage = () => {
          // Note: nextPage will call the same handler function as the initial call
          pagination.nextPage();
        };
      }
    }
  );
}

function addPlaces(
  places: google.maps.places.PlaceResult[],
  map: google.maps.Map
) {
  const placesList = document.getElementById("places") as HTMLElement;

  for (const place of places) {
    if (place.geometry && place.geometry.location) {
      const image = {
        url: place.icon!,
        size: new google.maps.Size(71, 71),
        origin: new google.maps.Point(0, 0),
        anchor: new google.maps.Point(17, 34),
        scaledSize: new google.maps.Size(25, 25),
      };

      new google.maps.Marker({
        map,
        icon: image,
        title: place.name!,
        position: place.geometry.location,
      });

      const li = document.createElement("li");

      li.textContent = place.name!;
      placesList.appendChild(li);

      li.addEventListener("click", () => {
        map.setCenter(place.geometry!.location!);
      });
    }
  }
}

declare global {
  interface Window {
    initMap: () => void;
  }
}
window.initMap = initMap;

JavaScript

// This example requires the Places library. Include the libraries=places
// parameter when you first load the API. For example:
// <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places">
function initMap() {
  // Create the map.
  const pyrmont = { lat: -33.866, lng: 151.196 };
  const map = new google.maps.Map(document.getElementById("map"), {
    center: pyrmont,
    zoom: 17,
    mapId: "8d193001f940fde3",
  });
  // Create the places service.
  const service = new google.maps.places.PlacesService(map);
  let getNextPage;
  const moreButton = document.getElementById("more");

  moreButton.onclick = function () {
    moreButton.disabled = true;
    if (getNextPage) {
      getNextPage();
    }
  };

  // Perform a nearby search.
  service.nearbySearch(
    { location: pyrmont, radius: 500, type: "store" },
    (results, status, pagination) => {
      if (status !== "OK" || !results) return;

      addPlaces(results, map);
      moreButton.disabled = !pagination || !pagination.hasNextPage;
      if (pagination && pagination.hasNextPage) {
        getNextPage = () => {
          // Note: nextPage will call the same handler function as the initial call
          pagination.nextPage();
        };
      }
    },
  );
}

function addPlaces(places, map) {
  const placesList = document.getElementById("places");

  for (const place of places) {
    if (place.geometry && place.geometry.location) {
      const image = {
        url: place.icon,
        size: new google.maps.Size(71, 71),
        origin: new google.maps.Point(0, 0),
        anchor: new google.maps.Point(17, 34),
        scaledSize: new google.maps.Size(25, 25),
      };

      new google.maps.Marker({
        map,
        icon: image,
        title: place.name,
        position: place.geometry.location,
      });

      const li = document.createElement("li");

      li.textContent = place.name;
      placesList.appendChild(li);
      li.addEventListener("click", () => {
        map.setCenter(place.geometry.location);
      });
    }
  }
}

window.initMap = initMap;
Beispiel ansehen

Testbeispiel

„Place Details“

Über den Places-Dienst lässt sich nicht nur eine Liste von Orten innerhalb eines Bereichs anzeigen, es können auch detaillierte Informationen zu einem bestimmten Ort zurückgegeben werden. Sobald ein Ort in einer Place Search-Antwort ausgegeben wurde, kann die zugehörige Orts-ID verwendet werden, um zusätzliche Details zu diesem Ort, etwa die vollständige Adresse, Telefonnummer, Nutzerbewertungen oder Rezensionen abzurufen.

„Place Details“-Anfragen

Ortsdetails werden mit einem Aufruf an die getDetails()-Methode des Dienstes angefordert.

service = new google.maps.places.PlacesService(map);
service.getDetails(request, callback);

Bei dieser Methode wird eine Anfrage mit der placeId des gewünschten Ortes und den Feldern gestellt, über die festgelegt wird, welche Arten von Places-Daten Sie abrufen möchten. Weitere Informationen dazu, wie Sie Verweise auf Orte mit einer Orts-ID erstellen

Außerdem wird eine Callback-Methode benötigt, mit der der in der google.maps.places.PlacesServiceStatus-Antwort und im google.maps.places.PlaceResult-Objekt übergebene Statuscode verarbeitet wird.

var request = {
  placeId: 'ChIJN1t_tDeuEmsRUsoyG83frY4',
  fields: ['name', 'rating', 'formatted_phone_number', 'geometry']
};

service = new google.maps.places.PlacesService(map);
service.getDetails(request, callback);

function callback(place, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
    createMarker(place);
  }
}

Beispiel ansehen

Felder (Place Details)

Für den Parameter fields kann ein Array von Strings (Feldnamen) angegeben werden.

Verwenden Sie den Parameter fields, um ein Array von Ortsdatentypen festzulegen, die zurückgegeben werden sollen, z. B. fields: ['address_components', 'opening_hours', 'geometry']. Verwenden Sie bei zusammengesetzten Werten einen Punkt, z. B. opening_hours.weekday_text.

Die Felder entsprechen „Place Details“-Ergebnissen und sind in drei Abrechnungskategorien unterteilt: „Basic“, „Contact“ und „Atmosphere“. Für Felder der Kategorie „Basic“ gilt der Basispreis und es fallen keine zusätzlichen Kosten an. Für Felder der Kategorie „Contact“ und „Atmosphere“ werden höhere Kosten abgerechnet. Weitere Informationen finden Sie in der Preisübersicht. Zuordnungen (html_attributions) werden bei jedem Aufruf zurückgegeben, unabhängig davon, ob sie angefordert wurden.

Basic

Die Kategorie „Basic“ umfasst folgende Felder:
address_components, adr_address, business_status, formatted_address, geometry, icon, icon_mask_base_uri, icon_background_color,name, permanently_closed (eingestellt), photo, place_id, plus_code, type, url, utc_offset (in der Places Library in der Maps JavaScript API eingestellt), utc_offset_minutes, vicinity

Contact

Die Kategorie „Contact“ umfasst folgende Felder:
formatted_phone_number, international_phone_number, opening_hours, website

Atmosphere

Die Kategorie „Atmosphere“ umfasst folgende Felder: price_level, rating, reviews, user_ratings_total

Sehen Sie sich weitere Informationen zu Feldern mit Ortsdaten an. Weitere Informationen zur Abrechnung von Anfragen für Ortsdaten finden Sie unter Nutzung und Abrechnung.

„Place Details“-Antworten

Statuscodes

Das PlacesServiceStatus-Antwortobjekt enthält den Status der Anfrage und evtl. Debugging-Informationen, mit deren Hilfe Sie herausfinden können, warum die Place Details-Anfrage zu Fehlern geführt hat. Mögliche Statuswerte sind:

  • INVALID_REQUEST: Die Anfrage war ungültig.
  • OK: Die Antwort enthält ein gültiges Ergebnis.
  • OVER_QUERY_LIMIT: Das Anfragenkontingent für die Webseite wurde überschritten.
  • NOT_FOUND: Der entsprechende Ort wurde in der Places-Datenbank nicht gefunden.
  • REQUEST_DENIED: Für die Webseite kann der PlacesService nicht genutzt werden.
  • UNKNOWN_ERROR: Die PlacesService-Anfrage konnte aufgrund eines Serverfehlers nicht verarbeitet werden. Die Anfrage ist möglicherweise erfolgreich, wenn Sie sie noch einmal ausführen.
  • ZERO_RESULTS: Für diese Anfrage wurde kein Ergebnis gefunden.

„Place Details“-Ergebnisse

Bei einem erfolgreichen getDetails()-Aufruf wird ein PlaceResult-Objekt mit den folgenden Attributen zurückgegeben:

  • address_components: ein Array, das die einzelnen Komponenten für diese Adresse enthält

    Jede Adresskomponente enthält normalerweise die folgenden Felder:

    • types[] ist ein Array, das den Typ der Adresskomponente angibt. Sehen Sie sich die Liste der unterstützten Typen an.
    • long_name ist die Volltextbeschreibung oder der Name der Adresskomponente, wie vom Geocoder zurückgegeben.
    • short_name ist ein abgekürzter Textname für die Adresskomponente, falls vorhanden. Beispielsweise könnte eine Adresskomponente für den US-Bundesstaat Alaska den long_name „Alaska“ und den short_name „AK“ haben, entsprechend der postalischen Abkürzung.

    Hinweise zum address_components[]-Array:

    • Das Array der Adresskomponenten kann mehr Komponenten als nur formatted_address enthalten.
    • Das Array enthält nicht unbedingt alle politischen Einheiten einer Adresse. Ausgenommen hiervon sind die im formatted_address enthaltenen. Wenn Sie alle politischen Einheiten abrufen möchten, die zu einer bestimmten Adresse gehören, müssen Sie die umgekehrte Geocodierung verwenden. Dabei wird der Breiten-/Längengrad der Adresse als Parameter an die Anfrage übergeben.
    • Es kann nicht garantiert werden, dass das Antwortformat zwischen mehreren Anfragen gleich bleibt. Insbesondere die Anzahl der address_components variiert je nach angeforderter Adresse und kann sich im Laufe der Zeit für dieselbe Adresse ändern. Die Position einer Komponente im Array ändert sich unter Umständen. Auch der Typ der Komponente kann sich ändern. In einer späteren Anfrage fehlt evtl. auch eine bestimmte Komponente.
  • business_status: Damit wird der Öffnungsstatus des Ortes angegeben, sofern es sich um ein Unternehmen handelt. Das Attribut kann einen der folgenden Werte annehmen:
    • OPERATIONAL
    • CLOSED_TEMPORARILY
    • CLOSED_PERMANENTLY
    Wenn keine Daten vorhanden sind, wird für business_status kein Wert zurückgegeben.
  • formatted_address: Damit wird die Adresse des Ortes in lesbarer Form angegeben.

    Diese Adresse stimmt häufig mit der Postanschrift überein. In einigen Ländern, z. B. dem Vereinigten Königreich, ist die Weitergabe echter Postanschriften aufgrund von Lizenzeinschränkungen nicht zulässig.

    Die formatierte Adresse besteht aus einer oder mehreren Adresskomponenten. Die Adresse „111 8th Avenue, New York, NY“ besteht z. B. aus den folgenden Komponenten: „111“ (Hausnummer), „8th Avenue“ (Straße), „New York“ (Stadt) und „NY“ (US-Bundesstaat).

    Wir raten davon ab, die formatierte Adresse programmatisch zu parsen. Verwenden Sie stattdessen die einzelnen Adresskomponenten, die zusätzlich zur formatierten Adresse in der API-Antwort enthalten sind.

  • formatted_phone_number: die Telefonnummer des Ortes, die gemäß den örtlichen Nummernkonventionen formatiert ist
  • geometry: die geometrischen Daten eines Ortes. Dazu zählen:
    • location: Damit werden der Breiten- und der Längengrad des Ortes angegeben.
    • viewport: Damit wird der bevorzugte Darstellungsbereich auf der Karte beim Anzeigen des Ortes festgelegt.
  • permanently_closed (eingestellt): Das ist ein boolescher Wert, mit dem angegeben wird, ob der Ort dauerhaft oder zeitweise (Wert: true) geschlossen ist. Wir raten davon ab, permanently_closed zu verwenden. Nutzen Sie stattdessen business_status, um den Öffnungsstatus von Unternehmen abzurufen.
  • plus_code (siehe Open Location Code und Plus Codes) ist ein codierter Verweis auf den Standort, der sich aus den Koordinaten (Breiten- und Längengrad) ableiten lässt und einen Bereich definiert: 1/8.000stel eines Grades mal 1/8.000stel eines Grades (ca. 14 m × 14 m am Äquator) oder kleiner. Plus Codes können als Ersatz für Adressen verwendet werden, wenn keine Adressen vorhanden sind, z. B. wenn Gebäude keine Hausnummern oder Straßen keine Namen haben.

    Der Plus Code wird als globaler oder als zusammengesetzter Code formatiert:

    • global_code besteht aus einem vierstelligen Code für das Gebiet und einem mindestens sechsstelligen lokalen Code (849VCWC8+R9).
    • compound_code ist ein mindestens sechsstelliger lokaler Code mit einem expliziten Ort (CWC8+R9 Mountain View, CA, USA). Wir raten davon ab, diesen Code programmatisch zu parsen.
    Normalerweise wird sowohl der globale als auch der zusammengesetzte Code zurückgegeben. Wenn der ausgegebene Ort abgelegen ist und sich etwa im Meer oder in der Wüste befindet, wird vermutlich nur der globale Code zurückgegeben.
  • html_attributions: Text der Zuordnung, der für dieses Ortsergebnis angezeigt werden soll
  • icon: URL einer Bildressource, die zur Darstellung des Ortstyps verwendet werden kann
  • international_phone_number enthält die Telefonnummer des Ortes im internationalen Format. Das internationale Format umfasst die Ländervorwahl mit einem vorangestellten Pluszeichen (+). Für die Google-Niederlassung in Sydney, Australien, wird international_phone_number z. B. als +61 2 9374 4000 angegeben.
  • name gibt den Namen des Ortes zurück.
  • utc_offset: in der Places Library in der Maps JavaScript API eingestellt. Verwenden Sie stattdessen utc_offset_minutes.
  • utc_offset_minutes enthält die Anzahl der Minuten, um die die Zeitzone des aktuellen Ortes von der UTC abweicht. Für Orte in Sydney, Australien, wäre das während der Sommerzeit z. B. 660 (+11 Stunden Abweichung von der UTC) und für Orte in Kalifornien während der Standardzeit −480 (−8 Stunden Abweichung von der UTC).
  • opening_hours enthält die folgenden Informationen:
    • open_now in der Places Library in der Maps JavaScript API eingestellt. Verwenden Sie stattdessen opening_hours.isOpen(). In diesem Video erfahren Sie, wie Sie isOpen mit Place Details nutzen. Es handelt sich hierbei um einen booleschen Wert, der angibt, ob der Ort derzeit geöffnet ist.
    • periods[] ist ein Array mit Öffnungszeiten in einem Zeitraum von 7 Tagen in chronologischer Reihenfolge, beginnend am Sonntag. Jeder Zeitraum enthält die folgenden Werte:
      • open enthält ein Paar aus Tages- und Zeitobjekten, die beschreiben, wann der Ort geöffnet hat:
        • day ist eine Zahl von 0 bis 6, die dem Wochentag entspricht, beginnend mit Sonntag. 2 bedeutet z. B. Dienstag.
        • time enthält die Uhrzeit im 24-Stunden-Format (hhmm). Zulässige Werte sind 0000 bis 2359. time wird in der Zeitzone des Ortes angegeben.
      • close enthält ein Paar aus Tages- und Zeitobjekten, die beschreiben, wann der Ort geschlossen hat. Hinweis: Wenn ein Ort durchgängig geöffnet ist, fehlt close in der Antwort. Ist der Ort immer geöffnet, wird in der Anwendung der Zeitraum open mit day mit dem Wert 0 und time mit dem Wert 0000 dargestellt. close ist dann nicht vorhanden.
    • weekday_text ist ein Array mit 7 Strings, die für die formatierten Öffnungszeiten an den einzelnen Wochentagen stehen. Wenn in der „Place Details“-Anfrage ein language-Parameter angegeben wurde, formatiert und lokalisiert der „Places“-Dienst die Öffnungszeiten entsprechend für die jeweilige Sprache. Die Reihenfolge der Elemente in diesem Array hängt vom Parameter language ab. In einigen Sprachen beginnt die Woche am Montag, in anderen am Sonntag.
  • permanently_closed (eingestellt): Das ist ein boolescher Wert, mit dem angegeben wird, ob der Ort dauerhaft oder zeitweise (Wert: true) geschlossen ist. Wir raten davon ab, permanently_closed zu verwenden. Nutzen Sie stattdessen business_status, um den Öffnungsstatus von Unternehmen abzurufen.
  • photos[]: ein Array von PlacePhoto-Objekten. Mit PlacePhoto lässt sich ein Foto mit der Methode getUrl() abrufen. Sie können das Objekt auch auf folgende Werte prüfen:
    • height: die maximale Höhe des Bildes in Pixeln
    • width: die maximale Breite des Bildes in Pixeln
    • html_attributions: Zuordnungstext, der mit dem Foto des Ortes angezeigt wird
  • place_id: eine ID in Textform, über die ein Ort eindeutig identifiziert wird. In einer „Place Details“-Anfrage kann die ID dann verwendet werden, um weitere Informationen zum Ort abzurufen. Weitere Informationen dazu, wie Sie Verweise auf Orte mit einer Orts-ID erstellen
  • rating: die Bewertung des Ortes. Sie beruht auf aggregierten Nutzerrezensionen und liegt zwischen 0,0 und 5,0.
  • reviews: ein Array mit bis zu 5 Rezensionen. Jede Rezension besteht aus mehreren Komponenten:
    • aspects[] enthält ein Array von PlaceAspectRating-Objekten, von denen jedes eine Bewertung eines einzelnen Attributs der Einrichtung umfasst. Das erste Objekt im Array gilt als der primäre Aspekt. Jedes PlaceAspectRating-Element wird so definiert:
      • type ist der Name des bewerteten Aspekts. Die folgenden Typen werden unterstützt: appeal, atmosphere, decor, facilities, food, overall, quality und service.
      • rating ist die Bewertung des Nutzers für den betreffenden Aspekt. Sie liegt zwischen 0 und 3.
    • author_name ist der Name des Nutzers, der die Rezension geschrieben hat. Anonyme Rezensionen werden mit „Ein Google-Nutzer“ gekennzeichnet. Wenn ein Sprachparameter definiert wurde, wird für „Ein Google-Nutzer“ ein lokalisierter String ausgegeben.
    • author_url ist die URL des Google+ Profils des Nutzers, sofern vorhanden.
    • language ist ein IETF-Sprachcode, der die Sprache angibt, in der die Rezension des Nutzers verfasst wurde. Dieses Feld enthält nur das primäre Tag für die Sprache, nicht das sekundäre Tag für Land oder Region. Alle englischsprachigen Kritiken erhalten z. B. das Tag „en“ und nicht „en-AU“ oder „en-UK“ usw.
    • rating ist die Gesamtbewertung des Nutzers für diesen Ort. Der Wert wird als Ganzzahl zwischen 1 und 5 angegeben.
    • text ist die Rezension des Nutzers. Wenn Sie eine Rezension für einen Ort in Google Places erstellen, sind Rezensionen in Textform optional. Daher ist dieses Feld eventuell leer.
  • types ist ein Array von Typen für diesen Ort (z. B. ["political", "locality"] oder ["restaurant", "lodging"]). Dieses Array kann mehrere Werte enthalten oder leer sein. Neue Werte können ohne vorherige Ankündigung eingeführt werden. Sehen Sie sich die Liste der unterstützten Typen an.
  • url ist die URL der offiziellen Google-Seite für diesen Ort. Es handelt sich dabei um die Google-eigene Seite, die die bestmöglichen Informationen zum Ort enthält. In Anwendungen muss diese Seite verlinkt oder eingebettet sein und zwar auf jedem Bildschirm, auf dem detaillierte Ergebnisse zu diesem Ort für den Nutzer angezeigt werden.
  • vicinity ist eine vereinfachte Adresse des Ortes, einschließlich Straße, Hausnummer und Verwaltungseinheit, aber ohne Provinz/Bundesland, Postleitzahl oder Land. Die Google-Niederlassung in Sydney, Australien, hat z. B. den vicinity-Wert 5/48 Pirrama Road, Pyrmont. Das Attribut vicinity wird nur bei einer Nearby Search-Anfrage zurückgegeben.
  • website ist die offizielle Website des Ortes, z. B. die Homepage eines Unternehmens.

Hinweis: Mehrdimensionale Bewertungen sind möglicherweise nicht für alle Orte verfügbar. Falls zu wenige Rezensionen vorhanden sind, enthält die Antwort auf eine „Places Details“-Anfrage entweder eine Legacy-Bewertung auf einer Skala von 1,0 bis 5,0 (falls verfügbar) oder gar keine Bewertung.

Verweise auf Orte mit einer Orts-ID erstellen

Eine Orts-ID ist ein eindeutiger Verweis auf einen Ort auf einer Google Maps-Karte. Orts-IDs lassen sich für die meisten Orte abrufen, einschließlich Unternehmen, Sehenswürdigkeiten, Parks und Kreuzungen.

Wenn Sie eine Orts-ID in Ihrer App verwenden möchten, müssen Sie die ID zuerst abrufen. Sie finden sie bei „Place Search“- oder „Place Details“-Anfragen in PlaceResult. Mit dieser Orts-ID können Sie dann nach Place Details suchen.

Orts-IDs sind von den Caching-Einschränkungen in Paragraf 3.2.3(b) der Nutzungsbedingungen für die Google Maps Platform ausgenommen. Sie können Orts-IDs also zur späteren Verwendung speichern. Best Practices zum Speichern von Orts-IDs finden Sie in der Übersicht zur Orts-ID.

var map;

function initialize() {
  // Create a map centered in Pyrmont, Sydney (Australia).
  map = new google.maps.Map(document.getElementById('map'), {
    center: {lat: -33.8666, lng: 151.1958},
    zoom: 15
  });

  // Search for Google's office in Australia.
  var request = {
    location: map.getCenter(),
    radius: '500',
    query: 'Google Sydney'
  };

  var service = new google.maps.places.PlacesService(map);
  service.textSearch(request, callback);
}

// Checks that the PlacesServiceStatus is OK, and adds a marker
// using the place ID and location from the PlacesService.
function callback(results, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
    var marker = new google.maps.Marker({
      map: map,
      place: {
        placeId: results[0].place_id,
        location: results[0].geometry.location
      }
    });
  }
}

google.maps.event.addDomListener(window, 'load', initialize);

Place Photos

Mit der Funktion „Place Photo“ können Sie qualitativ hochwertige Fotos auf Ihrer Website einbinden. Mit dem Fotodienst können Sie auf Millionen von Fotos in der Places-Datenbank und in der lokalen Google+ Datenbank zugreifen. Wenn Sie über eine „Place Details“-Anfrage Informationen zum Ort abrufen, erhalten Sie Fotoreferenzen zu relevanten Fotos. Bei „Nearby Search“- und „Text Search“-Anfragen wird, falls relevant, auch eine einzelne Fotoreferenz pro Ort zurückgegeben. Mit dem Fotodienst können Sie auf das referenzierte Foto zugreifen und das Bild auf die für Ihre Anwendung optimale Größe skalieren.

Ein Array von PlacePhoto-Objekten wird als Teil des PlaceResult-Objekts für eine getDetails()-, textSearch()- oder nearbySearch()-Anfrage ausgegeben, wenn sie für den PlacesService ausgeführt wird.

Hinweis: Die Anzahl der zurückgegebenen Fotos hängt von der Anfrage ab.

  • Bei „Nearby Search“- oder „Text Search“-Anfragen ist maximal ein PlacePhoto-Objekt enthalten.
  • Bei einer Detailanfrage werden bis zu 10 PlacePhoto-Objekte zurückgegeben.

Sie können die URL des verknüpften Bildes anfordern, indem Sie die Methode PlacePhoto.getUrl() aufrufen und ein gültiges PhotoOptions-Objekt weitergeben. Mit dem PhotoOptions-Objekt können Sie die maximal erwünschte Höhe und Breite des Bildes angeben. Wenn Sie sowohl für maxHeight als auch für maxWidth einen Wert angeben, wird das Bild vom Fotodienst auf die kleinere der beiden Größen skaliert, wobei das ursprüngliche Seitenverhältnis beibehalten wird.

Im folgenden Code-Snippet ist ein Ortsobjekt zulässig und es wird eine Markierung auf der Karte hinzugefügt, wenn ein Foto vorhanden ist. Das standardmäßige Bild der Markierung wird durch eine kleine Version des Fotos ersetzt.

function createPhotoMarker(place) {
  var photos = place.photos;
  if (!photos) {
    return;
  }

  var marker = new google.maps.Marker({
    map: map,
    position: place.geometry.location,
    title: place.name,
    icon: photos[0].getUrl({maxWidth: 35, maxHeight: 35})
  });
}

Die vom Fotodienst bereitgestellten Fotos stammen aus unterschiedlichen Quellen, z. B. von Geschäftsinhabern oder Nutzern. In den meisten Fällen dürfen diese Fotos ohne Quellenangabe verwendet werden bzw. sind die erforderlichen Zuordnungen bereits im Bild eingebunden. Wenn das zurückgegebene photo-Element jedoch einen Wert im Feld html_attributions enthält, müssen Sie die zusätzliche Zuordnung immer dann in Ihre Anwendung einbinden, wenn das Bild zu sehen ist.