我遇到问题,包括Google Places API。我已经使用API密钥设置了所有内容,列表/建议工作正常,但是当我选择建议时,place_changed
事件不会被触发。
检查小提琴:https://jsfiddle.net/xj2d77be/3/
它应该有效,但我完全不知道它为什么没有。
代码段(来自发布的小提琴):
$(document).ready(function() {
var autocomplete = new google.maps.places.SearchBox(document.getElementById('mapLocation'));
google.maps.event.addListener(autocomplete, 'place_changed', function() {
var place = autocomplete.getPlace();
console.log(place);
});
console.log("Initialized")
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maps.google.com/maps/api/js?libraries=places"></script>
<input type="text" id="mapLocation" />
答案 0 :(得分:2)
尝试这个,这将有效,我已经更新了你的代码,
https://jsfiddle.net/xj2d77be/4/
$(document).ready(function() {
var autocomplete = new google.maps.places.Autocomplete($("#mapLocation")[0]);
google.maps.event.addListener(autocomplete, 'place_changed', function() {
var place = autocomplete.getPlace();
console.log(place);
});
console.log("Initialized")
});
使用SearchBox:
https://jsfiddle.net/xj2d77be/5/
$(document).ready(function() {
var searchBox = new google.maps.places.SearchBox(document.getElementById('mapLocation'));
searchBox.addListener('places_changed', function() {
var place = searchBox.getPlaces();
console.log(place);
});
console.log("Initialized")
});
答案 1 :(得分:0)
SearchBox没有“place_changed”事件或.getPlace()
函数。它应该是“places_changed”和.getPlaces()
。
<强>方法强>
getPlaces()返回值:数组
返回用户选择的查询,如果尚未找到任何位置,则返回null,以与places_changed事件一起使用。
<强>事件强>
places_changed 参数:无
当用户选择查询时会触发此事件,应使用getPlaces获取新位置。
注意: .getPlaces()
函数返回一个数组而不是一个地方。
$(document).ready(function() {
var autocomplete = new google.maps.places.SearchBox(document.getElementById('mapLocation'));
google.maps.event.addListener(autocomplete, 'places_changed', function() {
var place = autocomplete.getPlaces();
console.log(place);
});
console.log("Initialized")
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maps.google.com/maps/api/js?libraries=places"></script>
<input type="text" id="mapLocation" />
答案 2 :(得分:0)
对我来说,@Transactional(dontRollbackOn = {SomeRuntimeException.class}
public void doSomething(){
...
Query query = this.getEntityManager().createQuery(...);
query.setParameter(...);
queryResult = query.getSingleResult();
}
事件会在我刷新页面之前触发,然后它就不会再触发(在本地网页上使用Google Chrome)。您必须重新启动Chrome或关闭开发人员工具并刷新页面才能再次触发该事件。