Bilder und Anmerkungen anzeigen

Entwickler im Europäischen Wirtschaftsraum (EWR)

Der SearchDestinations-Endpunkt der Geocoding API bietet hyperlokalen Kontext, einschließlich Navigationspunkten und Eingängen. Um die Nutzerfreundlichkeit zu verbessern, kann die Antwort Parameter für die Street View Static API enthalten, sodass Sie relevante Bilder für diese Standorte anzeigen können.

Bilder und Anmerkungen anfordern

Wenn Sie Bild- und Annotationsinformationen erhalten möchten, müssen Sie die folgenden Felder in den X-Goog-FieldMask-Header aufnehmen:

Beispiel für eine cURL-Anfrage

curl -X POST -d '{
  "place": "places/ChIJkU89GL9ZwokRvVjWDQzhaNg"
}' \
-H 'Content-Type: application/json' \
-H "X-Goog-Api-Key: API_KEY" \
-H "X-Goog-FieldMask: destinations.navigationPoints.streetViewThumbnail,destinations.navigationPoints.entranceAnnotation,destinations.entrances.streetViewThumbnail,destinations.entrances.streetViewAnnotation" \
https://geocode.googleapis.com/v4alpha/geocode/destinations

Beispiel für JSON-Antwort

{
  "destinations": [
    {
      "entrances": [
        {
          "location": {
            "latitude": 40.7406763,
            "longitude": -74.0020733
          },
          "tags": [
            "PREFERRED"
          ],
          "place": "places/ChIJkU89GL9ZwokRvVjWDQzhaNg",
          "streetViewThumbnail": {
            "pano": "EUKaIR67fBVmpsHnXuIevA",
            "widthPx": 400,
            "heightPx": 600,
            "headingDegree": 331.06186,
            "fovDegree": 60
          },
          "streetViewAnnotation": {
            "coordinates": [
              {
                "xPx": 184.7,
                "yPx": 290.4
              },
              {
                "xPx": 213.3,
                "yPx": 289.4
              },
              {
                "xPx": 214.8,
                "yPx": 330.8
              },
              {
                "xPx": 186.0,
                "yPx": 332.5
              }
            ]
          }
        }
      ]
    }
  ]
}

Die Objekte Entrance und NavigationPoint in der Antwort können ein streetViewThumbnail-Feld mit den folgenden Feldern enthalten:

Feld Beschreibung Statischer API-Parameter
pano Eine bestimmte Panorama-ID. pano
widthPx Vorgeschlagene Breite für das Bild. size (Breitenteil)
heightPx Vorgeschlagene Höhe für das Bild. size (Höhenteil)
headingDegree Kompasskurs der Kamera (0–360). heading
pitchDegree Winkel der Kamera nach oben/unten (-90 bis 90). pitch
fovDegree Horizontales Sichtfeld (0–120). fov

Bild anfordern

Wenn Sie ein Street View-Bild anfordern möchten, verwenden Sie die Werte aus dem streetViewThumbnail-Objekt, um eine URL für die Street View Static API zu erstellen.

Beispiel-URL

Im Folgenden sehen Sie ein Beispiel für eine erstellte Street View Static API-URL:

https://maps.googleapis.com/maps/api/streetview?size=400x600&pano=EUKaIR67fBVmpsHnXuIevA&heading=331.06186&fov=60&key=API_KEY&signature=YOUR_SIGNATURE

Beispielcode: TypeScript

Die folgende TypeScript-Funktion zeigt, wie die Static Street View API-URL aus der Ausgabe des Endpunkts „Destinations“ erstellt wird.

interface StreetViewThumbnail {
  pano: string;
  widthPx: number;
  heightPx: number;
  headingDegree: number;
  pitchDegree: number;
  fovDegree: number;
}

function getStreetViewUrl(thumbnail: StreetViewThumbnail, apiKey: string): string {
  const params = new URLSearchParams({
    size: `${thumbnail.widthPx}x${thumbnail.heightPx}`,
    pano: thumbnail.pano,
    heading: thumbnail.headingDegree.toString(),
    pitch: thumbnail.pitchDegree.toString(),
    fov: thumbnail.fovDegree.toString(),
    key: apiKey,
  });

  return `https://maps.googleapis.com/maps/api/streetview?${params.toString()}`;
}

Bildanmerkungen

Wenn ein Entrance oder ein NavigationPoint zurückgegeben wird, kann es auch eine Bildanmerkung des entsprechenden Eingangs im Feld streetViewAnnotation oder entranceAnnotation enthalten. Dies liefert Pixelkoordinaten für ein Polygon, das den Eingang im Vorschaubild umreißt.

Diese Anmerkungen sind für das clientseitige Rendern vorgesehen. Sie können damit ein Overlay (z. B. mit SVG oder einem <canvas>) über das von der Static API zurückgegebene Bild zeichnen.

Koordinatensystem für Anmerkungen

Der Ursprung (0,0) ist die obere linke Ecke des Bildes.

  • xPx: Horizontaler Abstand vom linken Rand.
  • yPx: Vertikaler Abstand vom oberen Rand.

Damit das Polygon richtig ausgerichtet wird, müssen Sie das Bild über die Static API mit dem size anfordern, der von widthPx und heightPx angegeben wird.

Beispielcode: Zeichnen von Anmerkungen (TypeScript und SVG)

In diesem Beispiel wird gezeigt, wie Sie mit TypeScript und SVG das Annotationspolygon für den Eingang auf das Street View-Bild legen.

TypeScript

interface Coordinate {
  xPx: number;
  yPx: number;
}

interface StreetViewAnnotation {
  coordinates: Coordinate[];
}

function drawAnnotations(annotation: StreetViewAnnotation, width: number, height: number) {
  const svg = document.getElementById('annotation-overlay') as unknown as SVGSVGElement;
  const polygon = document.getElementById('entrance-polygon') as unknown as SVGPolygonElement;

  // Set SVG dimensions to match the image
  svg.setAttribute('width', width.toString());
  svg.setAttribute('height', height.toString());
  svg.setAttribute('viewBox', `0 0 ${width} ${height}`);

  // Construct points string for the polygon
  const points = annotation.coordinates
    .map(coord => `${coord.xPx},${coord.yPx}`)
    .join(' ');

  polygon.setAttribute('points', points);
}

// Example usage:
const annotation = {
  coordinates: [
    {xPx: 184.7, yPx: 290.4},
    {xPx: 213.3, yPx: 289.4},
    {xPx: 214.8, yPx: 330.8},
    {xPx: 186.0, yPx: 332.5}
  ]
};
drawAnnotations(annotation, 400, 600);

HTML

<div style="position: relative; display: inline-block;">
  <!-- The Street View image from the previous step -->
  <img id="street-view-image" src="STREET_VIEW_IMAGE" alt="Street View" style="display: block;">

  <!-- SVG overlay for annotations -->
  <svg id="annotation-overlay" style="position: absolute; top: 0; left: 0; pointer-events: none;">
    <polygon id="entrance-polygon" points="" style="fill:rgba(0, 255, 17, 0.3);stroke:rgba(0, 255, 17, 0.9);stroke-width:3" />
  </svg>
</div>

Die Ausgabe sollte etwa so aussehen:

Google Street View in New York City

Feedback

Dies ist eine experimentelle Funktion der Geocoding API. Wir freuen uns über Feedback unter geocoding-feedback-channel@google.com.