簡體   English   中英

未捕獲的類型錯誤:無法讀取 null 的屬性“名稱”

[英]Uncaught TypeError: Cannot read property 'name' of null

我正在使用 Google Maps 和 Places API 來獲取地點列表並將它們添加到地圖中。 當您單擊其中一個標記時,會出現一個信息窗口,允許用戶查看地點名稱、聯系方式等。對於大約 60% 的標記一切正常,但對於其他 40%,信息窗口不出現。 查看 javascript 錯誤,我看到了這個錯誤:

Uncaught TypeError: Cannot read property 'name' of null.

這是我創建信息窗口的代碼:

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 個位置都被打印到控制台,所有這些都是對象,而且它們看起來都一樣。 下面我列出了控制台中可點擊和不可點擊的打印內容。

可點擊:

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

不可點擊:

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

detailsnull ,所以您的請求,即place.reference有問題。 place登錄到控制台並打開它以查看其中的內容 - 如果有的話。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM