Flickr目前无法使用图像

时间:2014-07-31 05:33:25

标签: javascript jquery json flickr

在我的Firefox OS应用程序中,我使用Flickr API显示相关图像,我的呼叫URL就是这样。

https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&lat=42.86366&lon=-75.91438&radius=3&format=json&nojsoncallback=1

我使用创建的函数来调用图像的闪烁api。这是我使用api键和api调用的经度和纬度创建URL的功能

function displayObject(id) {
    console.log('In diaplayObject()');
    var objectStore = db.transaction(dbTable).objectStore(dbTable);
    objectStore.openCursor().onsuccess = function(event) {
        var cursor = event.target.result;

        if (cursor) {
            if (cursor.value.ID == id) {
                 var lat = cursor.value.Lat;
                 var lon = cursor.value.Lon;
                showPosOnMap (lat, lon);

                // create the URL                   
                var url = 'https://api.flickr.com/services/rest/?method=flickr.photos.search';
                url += '&api_key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
                url += '&lat=' + lat + '';
                url += '&lon=' + lon + '';
                url += '&radius=3';
                url += '&format=json&nojsoncallback=1';

                $.getJSON(url, jsonFlickrFeed);

                return;
            }
            cursor.continue();
        } else {
            $('#detailsTitle').html('No DATA');
        }
    };
}

此函数获取从flickr接收的JSON对象。此功能在jquery移动网格中显示图像的缩略图。

function jsonFlickrFeed (data) {
    console.log(data);

    var output = '';
    // http://farm{farmId}.staticflickr.com/{server-id}/{id}_{secret}{size}.jpg
    for (var i = 0; i < data.photos.photo.length; i++) {
        // generate thumbnail link
        var linkThumb = '';
        linkThumb += 'http://farm' + data.photos.photo[i].farm + '.staticflickr.com/' + data.photos.photo[i].server + '/' + data.photos.photo[i].id + '_' + data.photos.photo[i].secret + '_s.jpg';
        // generate Full image link
        var linkFull = '';
        linkFull += 'http://farm' + data.photos.photo[i].farm + '.staticflickr.com/' + data.photos.photo[i].server + '/' + data.photos.photo[i].id + '_' + data.photos.photo[i].secret + '_b.jpg';

        if (i < 20)
            console.log(linkThumb);
        //console.log(linkFull);

        var title = data.photos.photo[i].title;
        var blocktype = ((i % 3) == 2) ? 'c' : ((i % 3) == 1) ? 'b' : 'a';

        output += '<div class="ui-block-' + blocktype + '">';
        output += '<a href="#showphoto" data-transition="fade" onclick="showPhoto(\'' + linkFull + '\',\'' + title + '\')">';
        output += '<img src="' + linkThumb + '_q.jpg" alt="' + title + '" />';
        output += '</a>';
        output += '</div>';
    };
    $('#photolist').html(output);
}

然后最后这个功能显示图像的全屏视图。当用户点击缩略图时,会拍摄并显示更大的图像。

function showPhoto (link, title) {
    var output = '<a href="#photos" data-transition="fade">';
    output += '<img src="' + link + '_b.jpg" alt="' + title + '" />';
    output += '</a>';
    $('#myphoto').html(output);
}

我的问题是,我通过调用API获取带有图像的JSON对象。我有console.log()我输出json对象,我检查了所有的图像信息。但是当我进入网格视图甚至是完整视图时,我得到了表示This image or video is currently unavailable的默认图像。我无法弄清楚我在这里做错了什么..请帮助。

1 个答案:

答案 0 :(得分:0)

您可能正在请求flickr没有该图像的图像大小。你附加“_s”,“_ q”和“_b”来选择一些尺寸 - 所以也许那些不可用。您可以查看flickr API'photos.getSizes'以查看可用的尺寸。 Flickr API有时候看起来很不方便。

https://www.flickr.com/services/api/flickr.photos.getSizes.html