2010-09-29 25 views
5

Ich habe eine Webanwendung, die Google Maps JavaScript API V3 verwendet, um eine normale googlemap und ein StreetView nebeneinander anzuzeigen. Wenn die Karte ihre Position ändert, teilt sie der Straßenansicht mit, StreetViewPanorama.setPosition() zu folgen.Überprüfen Sie StreetView Verfügbarkeit mit Google Maps JavaScript API V3

Wenn ich jedoch die Karte zu einem Ort scrollen lasse, an dem StreetView nicht verfügbar ist, bleibt das Streetview-Bild an der letzten Position hängen. Die Methode getPosition() gibt dieselbe LatLng wie die Master-Map zurück.

Wie kann ich feststellen, ob ich an einen Ort umgezogen bin, an dem StreetView nicht verfügbar ist?

Antwort

2

OK, ich fand eine Antwort, wenn nicht die Antwort.

Verwenden Sie nach jedem Zug StreetViewService.getPanoramaByLocation(), um das nächste Panorama innerhalb von N Metern zu erhalten. Basierend darauf können Sie bleiben, wo Sie sind, sich bewegen oder setVisible (false).

benutzte ich eine Flagge und eine setTimer viele unnötige Anrufe zu verhindern, wie dies getPanoramaByLocation:

var check_availability_lock = false; 
var check_availability = function() { 
    if (check_availability_lock) { 
     return; 
    } 
    check_availability_lock = true; 
    var availability_cb = function(data, status) { 
     check_availability_lock = false; 
     // console.log("status = ", status); 
     if (status !== 'OK') { 
      map.setVisible(false); 
     } 
     else { 
      map.setVisible(true); 
     } 
    } 
    setTimeout(function(){ 
     var latlng = map.getPosition(); 
     svc.getPanoramaByLocation(latlng, 50, availability_cb); 
    }, 2000); 
}; 
+0

http://code.google.com/apis/maps/documentation/javascript/reference.html# StreetViewService –

+0

Ein Problem mit diesem Ansatz besteht darin, dass jeder Aufruf von getPanoramaByLocation ~ 2 MB an Daten zurückgibt, die niemals entsorgt werden, sodass Ihre Webseite schnell instabil wird und abstürzt. Das Beschränken von Aufrufen von getPanoramaByLocation wird dringend empfohlen. Es gibt jedoch keine alternative Methode zur Bestimmung der Verfügbarkeit von Panoramen. – user1813319