Как проверить, не возвращает ли Google View View API изображения нет изображения?

Я использую API изображений Google Street View, чтобы показать изображение местоположения.

Он отлично работает, однако, когда изображение недоступно, я получаю черное изображение вместо изображения местоположения. Есть ли способ проверить, не возвращено ли изображение и отобразить другое изображение?

8
задан 03 дек. '11 в 19:35
источник поделиться
3 ответов
//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

                    }
                });
0
ответ дан 01 апр. '16 в 18:42
источник

Другой способ - загрузить изображение, а затем сравнить несколько цветов. Изображение "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 изменяет изображение, которое возвращает этот код, он сломается.

0
ответ дан 01 апр. '16 в 18:39
источник

Я не думаю, что есть способ проверить это. API изображений SV предназначен для статических случаев, когда вы не можете добавить много функций на страницу.

Возможно, вам стоит взглянуть на Просмотр улиц в JS API, который позволит вам обнаружить, когда доступны изображения.

0
ответ дан 08 февр. '12 в 5:16
источник

Другие вопросы по меткам или Задайте вопрос