Google 地图街景 "No Imagery" 状态正常

Google Maps Street View "No Imagery" with status OK

我一直在使用 Google 街景图像 API,当 api 响应 "we have no imagery" 时遇到问题。我实施了一些从以前的帖子中找到的解决方案,主要来自 detecting "we have no imagery" of google maps street view static images。这是我的代码:

var address = thisItem.addr + "," + thisItem.city + "," + thisItem.state + " " + thisItem.zip;

    var url = "https://maps.googleapis.com/maps/api/streetview?size=500x500&location=" + address + "&heading=&pitch=&key=";

    var itemLat = parseFloat(thisItem.lat);
    var itemLng = parseFloat(thisItem.lng);

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


    sv.getPanorama({location: {lat: itemLat, lng: itemLng}, radius: 1}, processSVData);

    function processSVData(data, status) {
      if (status === google.maps.StreetViewStatus.OK) {
        console.log('status ok');
      } else {
        console.log('status not ok')
      }
    }

如果有街景,我会把 url 插入 img src。

因为我在 url 调用中使用地址而不是 lat lng,而在 getPanorama 中使用 lat lng,当图像 returns 和 "no imagery found" StreetViewStatus 仍然正常时所以我无法设置库存图片。我还更改为在 url 中使用经纬度,然后即使状态不正常,图像也会始终显示。有什么建议吗?

Directly Accessing Street View Data

中所述

您可以向 StreetViewService 发起两种类型的请求:

  • 带有 StreetViewPanoRequest 的请求,此 returns 全景数据给出了唯一标识全景图的参考 ID。请注意,这些参考 ID 仅在该全景图像的生命周期内保持稳定。
  • 带有 StreetViewLocationRequest 的请求会搜索给定区域的全景数据,给定传递 LatLng

因此,对于您使用的地址,我建议您考虑使用 Geocoding Service 进行转换。

除此之外,这些参考资料也可能对您有所帮助

  • Using Street View Imagery
  • 这个 Thread 在 Google 地图帮助论坛
  • SO post - How can I tell if Google's Streetview Image API Returns “Sorry, we have no imagery here” (ie. NULL) Result?