如何查看Google街景视图是否可用并显示消息?

时间:2010-04-20 12:29:01

标签: javascript google-maps google-street-view

我正在传递lat和lng变量并在div中显示google sreet视图。问题是当StreetView无法使用时,不会显示任何内容。我想检查是否有给定lat和lng的街景并显示消息。这是我的代码:

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

也许我应该使用类似:Event.addListener(myPano, "error", errorMessage());

的内容

有什么想法吗?

3 个答案:

答案 0 :(得分:40)

在第3版中,这已经改变了一点。查看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
    }
});

答案 1 :(得分:17)

您可能需要查看以下参考资料:

  

通过目视检查GStreetviewOverlay来确定道路是否支持街景视图通常不可行,或者从用户的角度来看是理想的。因此,API提供了一种以编程方式请求和检索街景数据的服务。通过使用GStreetviewClient对象来促进此服务。

基本上,您可以使用getNearestPanoramaLatLng()类的GStreetviewClient方法,该方法会返回街道视图可用的最近点的GLatLng。然后,您可以使用distanceFrom()方法检查距离源点最近的街景点是否在特定阈值内。

这是一个完整的例子,我认为应该是自我解释的:

<!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>

答案 2 :(得分:1)

Google Maps JavaScript API v3.25 +更新: 在v3.25(当前发行版本)和v3.26(当前实验版本)中,getPanoramaByLocation()仍可用not documented anymore

@ 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