首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >未捕获的名称:无法读取null的属性‘TypeError’

未捕获的名称:无法读取null的属性‘TypeError’
EN

Stack Overflow用户
提问于 2012-05-25 15:48:07
回答 1查看 14.5K关注 0票数 0

我正在使用Google Maps和Places API来获取地点列表并将它们添加到地图中。当你点击其中一个标记时,会出现一个信息窗口,允许用户查看地点的名称、联系方式等。对于大约60%的标记,一切正常,但对于其他40%,信息窗口不会出现。查看javascript错误,我看到了这个错误:

代码语言:javascript
复制
Uncaught TypeError: Cannot read property 'name' of null.

下面是我创建信息窗口的代码:

代码语言:javascript
复制
function createMarker(place) {
  var placeLoc = place.geometry.location;
  var marker = new google.maps.Marker({
    map: map,
    position: place.geometry.location
  });
  var one = 1;
  var two = 2;

  var request = { reference: place.reference };
  service.getDetails(request, function(details, status) {
    google.maps.event.addListener(marker, 'click', function() {
      infowindow.setContent(
        details.name + "<br />"
        + details.formatted_address + "<br />"
        + "<a target='_blank' href='" + details.website +"'>Visit Website</a>" + "<br />"
        + details.formatted_phone_number + "<br />"
        + "<a href='#' onclick='getDirections(" + details.geometry.location.toUrlValue() 
        + "," + location1 + "); return false;'>Directions from Marker One</a>" + "<br />"
        + "<a href='#' onclick='getDirections2(" + details.geometry.location.toUrlValue()
        + "," + location2 + "); return false;'>Directions from Marker Two</a>" + "<br />"
      );
      infowindow.open(map, this);
    });
  });
}

我真的不太理解这个错误。谷歌存储的所有地点都必须有一个名称吗?!

根据记录,我已经浏览了Google Places & Maps API文档,但我真的找不到任何对我有帮助的东西。

在这一点上,任何帮助都是非常感谢的。

更新:

因此,我已经按照建议在控制台中记录了位置。对于我正在做的示例测试,它在我的地图上恰好创建了20个标记。在它创建的20个窗口中,只有8个在单击时显示信息窗口,其他12个返回上面列出的错误。正如我所料,所有20个位置都已经打印到控制台,都是对象,看起来都是一样的。下面我列出了控制台中打印的内容,其中一个是可点击的,另一个是不可点击的。

可点击:

代码语言:javascript
复制
Object
geometry: Object
html_attributions: Array[0]
icon: "http://maps.gstatic.com/mapfiles/place_api/icons/bar-71.png"
id: "97df16ee5e8d0d9e0c337f52b66dd85ae44de298"
name: "Red Lion"
rating: 3.3
reference: "CnRmAAAA1Oe3LpGcT2zpHUgRq4jfsx-QsnpgUlPKKhVhBL0AVjY1BNKJiscqTbxl-25alM_DJzTIjJTeIkpuVKL0CHkxgBc_nLKNddOkKv6EICQymo7etn-MVY4h06bTKUBwSjIfH30vbNSgCeiv3Cfzy27eORIQrUUJ4nStEjkCI2fJMTaVsRoUHI04xFPDfej3xHC17nJH2mBNBzg"
types: Array[3]
vicinity: "Little Missenden, Amersham"
__proto__: Object

不可点击:

代码语言:javascript
复制
Object
geometry: Object
html_attributions: Array[0]
icon: "http://maps.gstatic.com/mapfiles/place_api/icons/bar-71.png"
id: "01128746c46a52d9a215d3d6a01c11e22f1a49be"
name: "The Full Moon"
rating: 3.9
reference: "CnRrAAAAWDw84_G5mLrNQxd1b14uVsPhw6LmR6sXdvDrJqSDqnMUSzj88n1TImyictRtxtI6_mQz5YXyiBDWM5Un74MoCH06On5kf5JDw6RM3le2SDUcqyZO04NhqwyeBT267ctu91I74hTJmx_VGgqEpXe0HxIQhErbCKXmDJU2yaVmtltITxoUOi4OrxKU9fPGoBiYAn3NGmNpcn8"
types: Array[2]
vicinity: "Hare Lane, Little Kingshill, Great Missenden"
__proto__: Object

我还试着去掉所有不必要的代码。

可能值得注意的是,控制台中打印的一些属性可以进一步扩展,不确定它是否相关,所以我没有在示例中这样做。如果有人认为这是相关的,我可以在以后添加一个更新的版本。

感谢你到目前为止所有的回复。

JA

EN

回答 1

Stack Overflow用户

发布于 2012-05-25 17:06:31

detailsnull,所以你的请求,即place.reference有问题。登录place到控制台并打开它,看看里面有什么--如果有的话。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10750544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档