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