未捕获(承诺)TypeError:无法读取null的属性“ ownerDocument”

时间:2020-04-30 13:38:30

标签: javascript google-maps google-maps-api-3

我试图将searchBox添加到我的Google Maps API地图中,我已经激活了placesAPI,但是当我尝试调用它时,出现以下错误:“未捕获(承诺)TypeError:无法读取null的属性'ownerDocument' ” 在文件“放置imps.js”中。 此文件不是我的文件,必须是Google Places API的一部分。 这是我的代码(在我添加searchBox的一部分之前可以正常工作):

var mapOptions = {
zoom: 9,
scrollwheel: false,
center: center,
styles: mapStyles,
disableDefaultUI: false          
};

var map = new google.maps.Map(document.getElementById("map"), mapOptions);
var infowindow = new google.maps.InfoWindow();
var marker, i;

// Create the search box and link it to the UI element.
var input = document.getElementById('location');
var searchBox = new google.maps.places.SearchBox(input);
map.controls[google.maps.ControlPosition.TOP_LEFT].push(input);
return map;
}

var center = {lat:38.655942,lng:-8.200984};
init_map(locations, center);

1 个答案:

答案 0 :(得分:0)

我已经为这个问题斗争了好几个小时,并为自己解决了这个问题。我不确定您是如何包括各种占位符和展示位置标记的,但是您需要在以下位置添加

<div class="pac-card" id="pac-card">
    <div>
        <div id="title">
          Autocomplete search
        </div>
    <div id="type-selector" class="pac-controls">
          <input type="radio" name="type" id="changetype-all" checked="checked">
          <label for="changetype-all">All</label>

          <input type="radio" name="type" id="changetype-establishment">
          <label for="changetype-establishment">Establishments</label>

          <input type="radio" name="type" id="changetype-address">
          <label for="changetype-address">Addresses</label>

          <input type="radio" name="type" id="changetype-geocode">
          <label for="changetype-geocode">Geocodes</label>
        </div>
        <div id="strict-bounds-selector" class="pac-controls">
          <input type="checkbox" id="use-strict-bounds" value="">
          <label for="use-strict-bounds">Strict Bounds</label>
        </div>
      </div>
  <div id="pac-container">
    <input id="pac-input" type="text"
       placeholder="Enter a location">
  </div>
</div>
<div id="map"></div>
<div id="infowindow-content">
  <img src="" width="16" height="16" id="place-icon">
  <span id="place-name"  class="title"></span><br>
  <span id="place-address"></span>
</div>

当我第一次遇到错误时,我使用正确的纬度/经度绘制了地图,并在加载地图时对原始中心点进行了硬编码。通过在创建实际地图之前/之后添加上述代码,自动完成框出现,我的错误消失了。希望这会有所帮助,如果我的答案有任何不清楚或令人困惑的地方,请告诉我。