Javascript 如何检查谷歌街景图像API是否返回无图像?

Javascript 如何检查谷歌街景图像API是否返回无图像?,javascript,google-street-view,Javascript,Google Street View,我正在使用显示一个位置的图像 它工作得很好,但是当没有可用的图片时,我会得到一个黑色图像,而不是位置图片。是否有任何方法可以检查是否没有返回图像并显示另一个图像 我认为没有办法检查这一点。SV image API是为静态情况而设计的,当您无法向页面添加太多功能时 也许你应该看看,它可以让你检测图像何时可用。另一种方法是加载图像,然后比较一些像素的颜色。谷歌的“没有街景”图片总是一样的。下面是比较2个像素的方法: var url = STREETVIEWURL var img = new Imag

我正在使用显示一个位置的图像


它工作得很好,但是当没有可用的图片时,我会得到一个黑色图像,而不是位置图片。是否有任何方法可以检查是否没有返回图像并显示另一个图像

我认为没有办法检查这一点。SV image API是为静态情况而设计的,当您无法向页面添加太多功能时


也许你应该看看,它可以让你检测图像何时可用。

另一种方法是加载图像,然后比较一些像素的颜色。谷歌的“没有街景”图片总是一样的。下面是比较2个像素的方法:

var url = STREETVIEWURL
var img = new Image();
// Add some info to prevent cross origin tainting
img.src = url + '?' + new Date().getTime();
img.setAttribute('crossOrigin', '');
img.crossOrigin = "Anonymous";
img.onload = function() {
    var context = document.createElement('CANVAS').getContext('2d');
    context.drawImage(img, 0, 0);
    //load 2 pixels.  I chose the first one and the 5th row
    var data1 = context.getImageData(0, 0, 1, 1).data;
    var data2 = context.getImageData(0, 5, 1, 1).data;
    console.log(data1);
    // google unknown image is this pixel color [228,227,223,255]
    if(data1[0]==228 && data1[1]==227 && data1[2]==223 && data1[3]==255 && 
                     data2[0]==228 && data2[1]==227 && data2[2]==223 && data2[3]==255){
        console.log("NO StreetView Available");
    }else{
         console.log("StreetView is Available");
    }
};
一些潜在的问题:我看到了一些交叉源污染的错误。此外,如果google更改返回的图像,此代码将中断。

//image Div
//Image Div  

<div id='pano'>    

    streetview.getPanoramaByLocation(streetViewLocation, 50, function(data, status) {
                    if (status == 'OK') {
                      var fenway = {lat: Number(alarm_lat), lng: Number(alarm_lng)};
                      var panorama = new google.maps.StreetViewPanorama(document.getElementById('pano'), {
                        position: fenway,
                        pov: {
                          heading: 34,
                          pitch: 10
                        }
                      });    
                      map.setStreetView(panorama);
                    }
                    else{
                      //another image here

                    }
                });
街景。getPanoramaByLocation(街景位置,50,功能(数据,状态){ 如果(状态=‘正常’){ var fenway={lat:Number(alarm_lat),lng:Number(alarm_lng)}; var panorama=new google.maps.StreetViewPanorama(document.getElementById('pano'){ 位置:芬威, pov:{ 标题:34, 投球:10 } }); 地图设置树视图(全景); } 否则{ //这里是另一张图片 } });
我不知道为什么投票结束,因为在我看来这是一个非常明智的问题——尽管乍一看似乎没有简单的答案。