2011-12-03 36 views
8

我使用Google Street View image API来显示位置图像。如何检查Google街景图片API是否返回图片?

它工作正常,但是当没有图片可用我得到一个黑色的图像,而不是位置图片。有没有什么方法可以检查是否没有图像被返回并显示另一个图像?

+0

不确定为什么有投票结束,因为这在我看来似乎是一个非常明智的问题 - 尽管看起来第一眼看不到一个简单的答案。 – Murph

回答

0

我不认为有一种方法来检查这一点。 SV图像API是针对静态情况设计的,当您无法向页面添加更多功能时。

也许你应该看看Street View in the JS API,它可以让你检测图像是否可用。

0

另一种方法是加载图像,然后比较一些像素的颜色。谷歌的“no streetview”图片总是一样的。下面是你将如何比较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"); 
    } 
}; 

一些潜在的问题:我已经看到CrossOrigin污点的一些错误。另外,如果谷歌改变了图像返回这个代码将打破。

0
//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 

        } 
       });