2011-12-03 6 views
8

मैं किसी स्थान की छवि दिखाने के लिए Google Street View image API का उपयोग कर रहा हूं।कैसे जांचें कि क्या Google सड़क दृश्य छवि API कोई छवि नहीं लौटाता है?

यह ठीक काम करता है, हालांकि जब कोई तस्वीर उपलब्ध नहीं है तो मुझे एक स्थान चित्र की बजाय एक काला छवि मिलती है। क्या कोई तरीका है कि मैं जांच सकता हूं कि कोई छवि वापस नहीं आती है और इसके बजाय कोई और छवि दिखाती है?

+0

यह सुनिश्चित नहीं है कि यह बंद करने के लिए वोट क्यों है क्योंकि यह मुझे एक पूरी तरह से समझदार प्रश्न माना जाता है - यद्यपि पहली झलक दिखने वाला कोई आसान जवाब नहीं है। – Murph

उत्तर

0

मुझे नहीं लगता कि यह जांचने का कोई तरीका है। एसवी छवि एपीआई स्थिर मामलों के लिए डिज़ाइन किया गया है जब आप पृष्ठ पर अधिक कार्यक्षमता नहीं जोड़ सकते हैं।

शायद आपको Street View in the JS API पर देखना चाहिए, जो आपको इमेजरी उपलब्ध होने पर पता लगाने देगा।

0

छवि लोड करने का एक और तरीका है और फिर कुछ पिक्सल रंगों की तुलना करें। Google से "नो स्ट्रीटव्यू" छवि हमेशा एक जैसी होती है।

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"); 
    } 
}; 

कुछ संभावित मुद्दों: आप निम्न तरीके से 2 पिक्सेल तुलना होता है मैं CrossOrigin tainting के साथ कुछ त्रुटियाँ देखा है। साथ ही, अगर Google ने छवि को बदल दिया है तो यह कोड टूट जाएगा।

0
//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 

        } 
       }); 
संबंधित मुद्दे