2010-04-20 6 views
16

Ich übergebe lat und lng Variablen und zeige google sreet view in einem div. Das Problem ist, dass wenn das StreetView nicht verfügbar ist, nichts angezeigt wird. Ich möchte überprüfen, ob es eine Streetview für ein gegebenes lat und lng gibt und eine Nachricht anzeigen. Hier ist mein Code:Wie kann ich prüfen, ob Google Street View verfügbar ist und eine Nachricht anzeigen?

var myPano = new GStreetviewPanorama(document.getElementById("street2"), panoOpts); 
var location = new GLatLng(lat,lng) 
myPano.setLocationAndPOV(location); 

Vielleicht sollte ich so etwas wie: Event.addListener(myPano, "error", errorMessage());

Irgendwelche Ideen?

+0

Die akzeptierte Antwort sollte geändert werden! –

Antwort

35

In v3 dies ein wenig verändert hat. Schauen Sie sich die Dokumentation auf http://code.google.com/apis/maps/documentation/javascript/reference.html#StreetViewService

Der aktualisierte Code ist:

var streetViewService = new google.maps.StreetViewService(); 
var STREETVIEW_MAX_DISTANCE = 100; 
var latLng = new google.maps.LatLng(40.7140, -74.0062); 
streetViewService.getPanoramaByLocation(latLng, STREETVIEW_MAX_DISTANCE, function (streetViewPanoramaData, status) { 
    if (status === google.maps.StreetViewStatus.OK) { 
     // ok 
    } else { 
     // no street view available in this range, or some error occurred 
    } 
}); 
+0

Das war eine fantastische Hilfe für mich. Ich danke dir sehr!!! – jeffkee

+0

Beachten Sie, dass 'getPanoramaByLocation' asynchron ist. Alles, was Sie als Ergebnis der Überprüfung tun möchten, muss in die Rückruffunktion gehen. – hitautodestruct

+0

Perfekt, danke – AhammadaliPK

17

Möglicherweise möchten Sie den folgenden Hinweis Besuche:

Feststellung, ob eine Straße durch visuelle Inspektion der GStreetviewOverlay Street View unterstützt, ist nicht oft möglich oder wünschenswert die Perspektive eines Benutzers. Aus diesem Grund stellt die API einen Dienst bereit, der die Street View-Daten programmgesteuert anfordert und abruft. Dieser Service wird durch die Verwendung des Objekts GStreetviewClient erleichtert.

Grundsätzlich können Sie die getNearestPanoramaLatLng() Methode der GStreetviewClient-Klasse verwenden, die Ihnen eine GLatLng des nächstgelegenen Punkt zurück, wo die Straße zur Verfügung. Sie können dann die Methode distanceFrom() verwenden, um zu überprüfen, ob der nächstgelegene Straßenansichtspunkt innerhalb eines bestimmten Schwellenwerts von Ihrem Quellpunkt liegt. Hier

ist ein vollständiges Beispiel, das glaube ich sollte selbsterklärend sein:

<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
    <title>Google Maps API - Street View Availability</title> 
    <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=false" 
      type="text/javascript"></script> 
    </head> 
    <body> 
    <script type="text/javascript"> 
     var testPoint = new GLatLng(40.7140, -74.0062); // Broadway, New York 
     var svClient = new GStreetviewClient(); 

     svClient.getNearestPanoramaLatLng(testPoint, function (nearest) { 
      if ((nearest !== null) && (testPoint.distanceFrom(nearest) <= 100)) { 
      alert('Street View Available');    // Within 100 meters 
      } 
      else { 
      alert('Street View Noet Available');  // Not within 100 meters 
      } 
     }); 
    </script> 
    </body> 
</html> 
+0

Wirklich nett, vielen Dank! – Vonder

+2

Diese Antwort ist veraltet. V3 Antwort [und Dokumente] (http://code.google.com/apis/maps/documentation/javascript/reference.html#StreetViewService) – hitautodestruct

0

Update für Google Maps JavaScript API v3.25 +: In v3.25 (aktuelle Release-Version) und v3.26 (aktuelle experimentelle Version), getPanoramaByLocation() ist noch verfügbar, aber not documented anymore.

@ arthur-clemens die akzeptierte Antwort noch funktioniert, aber getPanorama() mit einem StreetViewLocationRequest stattdessen verwenden, wenn Sie eine bessere Kompatibilität wollen:

var gstService = new google.maps.StreetViewService(); 

gstService.getPanorama({ 
    location: new google.maps.LatLng(40.7140, -74.0062), 
    source: google.maps.StreetViewSource.OUTDOOR 
}, function (data, status) { 
    if (status === google.maps.StreetViewStatus.OK) { 
     // OK 
    } else { 
     // error or no results 
    } 
}); 

auslassen source im StreetViewLocationRequest, wenn Sie werden nicht das Panorama suchen wollen begrenzt im Freien.

Verwandte Themen