19

lat変数とlng変数を渡し、Googlesreetビューをdivに表示しています。問題は、ストリートビューが利用できない場合、何も表示されないことです。特定の緯度と経度のストリートビューがあるかどうかを確認し、メッセージを表示したいと思います。これが私のコードです:

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

多分私は次のようなものを使うべきです: Event.addListener(myPano, "error", errorMessage());

何か案は?

4

3 に答える 3

41

v3では、これが少し変更されました。http://code.google.com/apis/maps/documentation/javascript/reference.html#StreetViewServiceでドキュメントを確認してください

更新されたコードは次のとおりです。

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
    }
});
于 2011-09-17T22:58:37.940 に答える
17

次のリファレンスを確認することをお勧めします。

道路を目視検査してストリートビューがサポートされているかどうかを判断するGStreetviewOverlayことは、多くの場合実行可能ではないか、ユーザーの観点からは望ましいことではありません。そのため、APIは、ストリートビューデータをプログラムで要求および取得するサービスを提供します。このサービスは、GStreetviewClientオブジェクトを使用することで容易になります。

基本的に、クラスのgetNearestPanoramaLatLng()メソッドを使用できます。これにより、ストリートビューを利用できる最も近いポイントが返されます。次に、このメソッドを使用して、最も近いストリートビューポイントがソースポイントから特定のしきい値内にあるかどうかを確認できます。GStreetviewClientGLatLngdistanceFrom()

これは完全な例であり、自明であると私は信じています。

<!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>
于 2010-04-20T15:29:54.130 に答える
1

Google Maps JavaScript API v3.25 +のアップデート:v3.25(現在のリリースバージョン)およびv3.26(現在の実験バージョン)では、getPanoramaByLocation()引き続き利用できますが、ドキュメント化されていません

@ arthur-clemensが受け入れた回答は引き続き機能しますが、互換性を高めたい場合は、代わりに使用getPanorama()してください。StreetViewLocationRequest

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
    }
});

パノラマ検索を屋外のものに限定したくない場合は、省略sourceしてください。StreetViewLocationRequest

于 2016-10-12T10:49:51.750 に答える