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
}
});
地图设置树视图(全景);
}
否则{
//这里是另一张图片
}
});
我不知道为什么投票结束,因为在我看来这是一个非常明智的问题——尽管乍一看似乎没有简单的答案。