我有以下javascript:
function callback(results, status) {
if (status == google.maps.places.PlacesServiceStatus.OK) {
for (var i = 0; i < results.length; i++) {
place = new Object ({
name: results[i].name,
photo: results[i].photos[0].getUrl({'maxWidth': 100, 'maxHeight': 100}),
loc: results[i].geometry.location,
rating: results[i].rating,
})
places.push(place);
var marker = new google.maps.Marker({
map: map,
position: results[i].geometry.location,
id: i,
visible: false,
});
markers.push(marker);
}
}
newresult();
}
如果我注释掉以下行,则运行newresult()函数:
photo: results[i].photos[0].getUrl({'maxWidth': 100, 'maxHeight': 100}),
但是,如上面的代码所示,如果我不注释掉函数newresult()将不会运行。我知道照片的getUrl函数有效,因为它返回一个有效的url。
感谢您的帮助。
答案 0 :(得分:14)
我知道照片的getUrl函数在返回有效值时起作用 网址。
是的,如果,则会有与该地点相关联的照片!在photo
对象中没有地方的照片=没有results[i]
数组。然后你的代码中断了。您必须在每次迭代中检查photo
数组是否存在才能使用它:
place = new Object ({
name: results[i].name,
photo: typeof results[i].photos !== 'undefined'
? results[i].photos[0].getUrl({'maxWidth': 100, 'maxHeight': 100})
: '' //alternative a "nophoto.jpg"
loc: results[i].geometry.location,
rating: results[i].rating,
});
这里有一个基于你上面代码的小提琴 - &gt;的 http://jsfiddle.net/dX9Gu/ 强>