Cách khác là tải hình ảnh và sau đó so sánh một số màu pixel. Hình ảnh "không có chế độ xem phố" từ google luôn giống nhau. Dưới đây là cách bạn so sánh 2 pixel:
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");
}
};
Một số vấn đề tiềm năng: Tôi đã nhìn thấy một số lỗi với CrossOrigin tainting. Ngoài ra, nếu google thay đổi hình ảnh trả lại mã này sẽ phá vỡ.
Nguồn
2016-04-01 15:39:08
Không chắc chắn tại sao có phiếu bầu để đóng vì điều này dường như là một câu hỏi hoàn toàn hợp lý - mặc dù cái nhìn thoáng qua đầu tiên không có câu trả lời đơn giản. – Murph