我现在正在玩 Facebook graph api。我正在获取所有用户朋友的个人资料图片和其他数据,并将它们放在谷歌地图上作为标记。
它正在工作,但它似乎要等待所有数据和图像在它开始出现之前返回。抱歉,如果这太笼统了,我是初学者。我尝试将 JSON 调用分解为几个回调函数,但这没有帮助。我希望在收到数据后立即放置每个朋友的图像。
我的代码如下(4 次调用以使用 jquery 获取 JSON)。首先调用获取朋友列表,然后为每个朋友获取图像和数据,然后获取位置数据。
$.getJSON("https://graph.facebook.com/" + userid + "/friends?access_token=" + token, function(data) {
$.each(data.data, function(key, val) {
$.getJSON("https://graph.facebook.com/"+ val.id + "?fields=picture", function(idata) {
var img = new Image();
img.src = idata.picture;
$.getJSON("https://graph.facebook.com/"+ val.id + "?access_token=" + token, function(fdata) {
$.getJSON("https://graph.facebook.com/"+ fdata.location.id + "?access_token=" + token , function(ldata) {
$('#map_canvas').gmap('addMarker', {
'id': 'mark',
'position': ldata.location.latitude + ',' + ldata.location.longitude,
'draggable': false,
'bounds': false,
'icon' : image.src,
'title' : fdata.name,
'animation': google.maps.Animation.DROP,
}).click(function() {
$('#map_canvas').gmap('openInfoWindow', {'content': 'Name: ' + fdata.name + '</br>Location: ' + fdata.location.name }, this);
});
});
});
});
});
});