谷歌地方照片getUrl()打破了我的JavaScript

时间:2014-03-17 16:28:44

标签: google-maps-api-3 google-places-api geturl

我有以下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。

感谢您的帮助。

1 个答案:

答案 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/