2010-04-20 19 views
16

Lat ve lng değişkenlerini geçiriyorum ve Google sreet görünümünü bir div olarak gösteriyorum. Sorun şu ki, StreetView imkansız olduğunda hiçbir şey gösterilmiyor. Verilen bir lat ve lng için bir sokak görünümü olup olmadığını kontrol etmek ve bir mesaj görüntülemek istiyorum. Event.addListener(myPano, "error", errorMessage());Google Street View'ın kullanılabilir olup olmadığını nasıl görüntüleyebilir ve görüntüleyebilir?

Herhangi fikirler:

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

Belki böyle bir şey kullanmalısınız: İşte benim kodudur?

+0

Bunun kabul edilen cevabı değiştirilmelidir! –

cevap

35

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

adresinden belgeleri kontrol edin güncellenen kodudur:

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

Bu benim için harika bir yardımcı oldu. Çok teşekkür ederim!!! – jeffkee

+0

"getPanoramaByLocation" öğesinin senkronize olmadığını unutmayın. Çekin bir sonucu olarak yapmak istediğiniz her şeyin anlamı, geri arama işlevine girmelidir. – hitautodestruct

+0

Mükemmel, teşekkürler – AhammadaliPK

17

Aşağıdaki referans kontrol etmek isteyebilirsiniz:

  • Google Maps API Documentation: Street View Client Querying
  • yol GStreetviewOverlay görsel denetimi ile Street View destekleyip desteklemediğini belirlenmesi çoğu zaman mümkün veya arzu edilir değildir Bir kullanıcının bakış açısı. Bu nedenle, API, Sokak Görünümü verilerini programlı olarak isteyen ve geri yükleyen bir hizmet sunar. Bu hizmet, GStreetviewClient nesnesinin kullanımıyla kolaylaştırılmıştır.

Temelde size sokak görünümü mevcuttur en yakın noktasının bir GLatLng dönecektir GStreetviewClient sınıfın getNearestPanoramaLatLng() yöntemi kullanabilirsiniz. En yakın cadde görünüm noktasının kaynak noktanızdan belirli bir eşiğin içinde olup olmadığını kontrol etmek için distanceFrom() yöntemini kullanabilirsiniz. İşte

Ben kendini açıklayıcı olması gerektiğine inandığınız tam bir örnek vardır:

bu biraz değişti v3 olarak
<!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

Gerçekten çok hoş, teşekkürler! – Vonder

+2

Bu cevap tarihi geçmiş. V3 yanıtına bakın [ve belgeler] (http://code.google.com/apis/maps/documentation/javascript/reference.html#StreetViewService) – hitautodestruct

0

Google Maps JavaScript API v3.25 + için Güncelleme: v3.25 yılında (güncel sürüm sürüm) ve v3.26 (deneysel akım sürüm), getPanoramaByLocation() hala kullanılabilir ancak not documented anymore.

arthur-clemens @

kabul ettiği cevabı hala çalışır, ama daha iyi uyumluluk isterseniz yerine StreetViewLocationRequest ile getPanorama() kullanın:

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 
    } 
}); 
Eğer panorama arama ile sınırlı olmak istemiyorsanız StreetViewLocationRequest yılında

Gözardı source açık olanlar.

İlgili konular