我使用Google Street View image API来显示位置图像。如何检查Google街景图片API是否返回图片?
它工作正常,但是当没有图片可用我得到一个黑色的图像,而不是位置图片。有没有什么方法可以检查是否没有图像被返回并显示另一个图像?
我使用Google Street View image API来显示位置图像。如何检查Google街景图片API是否返回图片?
它工作正常,但是当没有图片可用我得到一个黑色的图像,而不是位置图片。有没有什么方法可以检查是否没有图像被返回并显示另一个图像?
我不认为有一种方法来检查这一点。 SV图像API是针对静态情况设计的,当您无法向页面添加更多功能时。
也许你应该看看Street View in the JS API,它可以让你检测图像是否可用。
另一种方法是加载图像,然后比较一些像素的颜色。谷歌的“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污点的一些错误。另外,如果谷歌改变了图像返回这个代码将打破。
//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
}
});
不确定为什么有投票结束,因为这在我看来似乎是一个非常明智的问题 - 尽管看起来第一眼看不到一个简单的答案。 – Murph