2010-09-29 17 views
5

Mam aplikację webową, która korzysta z Google Maps JavaScript API V3, aby wyświetlać zwykłą listę googlemap i StreetView obok siebie. Kiedy mapa zmienia położenie, informuje streetview, aby podążał za nią za pomocą StreetViewPanorama.setPosition().Sprawdź dostępność StreetView za pomocą Google Maps JavaScript API V3

Jednak po przewinięciu mapy w miejsce, w którym StreetView jest niedostępny, zdjęcie z ulicy pozostaje w ostatniej pozycji. Jego metoda getPosition() zwraca tę samą funkcję LatLng, co mapa podstawowa.

Jak mogę sprawdzić, czy przeniosłem się do miejsca, w którym StreetView jest niedostępny?

Odpowiedz

2

OK, znalazłem odpowiedź, jeśli nie , odpowiedź.

Po każdym ruchu użyj StreetViewService.getPanoramaByLocation(), aby uzyskać najbliższą panoramę w obrębie N metrów. Na tej podstawie możesz pozostać w miejscu, w którym się znajdujesz, przenieść lub ustawić wartośćVisible (fałsz).

użyłem flagę i SetTimer aby zapobiec wiele niepotrzebnych wezwań do getPanoramaByLocation tak:

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

Problem z tym podejściem polega na tym, że każde wywołanie metody getPanoramaByLocation zwraca ~ 2 MB danych, które nigdy nie są usuwane, więc strona internetowa szybko stanie się niestabilna i ulegnie awarii. Ograniczanie połączeń do getPanoramaByLocation jest mocno zalecane. Jednak nie ma alternatywnej metody określania dostępności panoram. – user1813319

Powiązane problemy