Друг начин е да заредите изображението и след това да сравните цветовете на някои пиксели. Изображението „no streetview“ от Google винаги е едно и също. Ето как бихте сравнили 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. Освен това, ако Google промени върнатото изображение, този код ще се повреди.
person
mogile_oli
schedule
01.04.2016