Position eines Street View-Panoramas über Panorama-ID ermitteln (Google Maps Javascript API V3)

Jedes Panorama hat eine eindeutige ID. (IDs sind nur während einer Session stabil!) Über die Methode getLinks() werden zum aktuellen Street View-Panorama ein Array der verbundenen Straßen mit Name, Richtung und IDs der nächsten Panoramen zurückgeliefert. Leider aber nicht die einzelnen Positionen.

Eine Möglichkeit bietet die StreetViewService-Klasse. Die Methode getPanoramaById() liefert dazu ein StreetViewPanoramaData-Objekt zurück welches unter anderem die Position enthält.

//...

var sv = new google.maps.StreetViewService();
var panoramaLinks = panorama.getLinks();
for (var i in panoramaLinks) {
  sv.getPanoramaById(panoramaLinks[i].pano, processSVData)
}

//...
 
function processSVData(data, status) {
  if (status == google.maps.StreetViewStatus.OK) {
    alert(data.location.latLng);
  }
}

Jetzt ist man in der Lage z.B. die Positionen der nächsten Panoramen auf einer Karte zu markieren oder die Entfernungen zur aktuellen Position auszurechnen. Letzteres ist wiederum wichtig wenn es um eine möglichste genaue Simulation einer virtuellen Fahrt durch Street View geht.

Bei kurzen Tests rund um den Globus, scheinen die Panoramen immer mindestens 10 m Abstand zu haben. Eine Unterschreitung habe ich nie gesehen. Auf Landstraßen können es auch schon mal über 40 m sein.

Link: Google Maps Javascript API V3