我正在使用Google Maps API和Autocomplete搜索功能。目前,您必须开始输入位置(城市、州、邮编等),然后从下拉菜单中选择结果,地图才能以该位置为中心。但是,我希望将其设置得更加完善,如果有人只输入了城市或州并按下“enter”键,而没有选择自动完成的结果,它仍然可以正常工作。例如,如果有人只输入了“纽约”,并在下拉列表中未选择任何结果,它仍将居中显示在纽约。
我假设这可以通过从自动完成下拉列表中抓取第一个结果来实现,如果没有手动选择的话。
我已经为表单提交添加了事件侦听器,但不确定如何将第一个结果传递给“place”变量。
以下是我的代码:
我假设这可以通过从自动完成下拉列表中抓取第一个结果来实现,如果没有手动选择的话。
我已经为表单提交添加了事件侦听器,但不确定如何将第一个结果传递给“place”变量。
以下是我的代码:
function searchBar(map) {
var input = document.getElementById('search-input');
var searchform = document.getElementById('search-form');
var place;
var options = {componentRestrictions: {country: 'us'}};
var autocomplete = new google.maps.places.Autocomplete(input, options);
//Add listener to detect autocomplete selection
google.maps.event.addListener(autocomplete, 'place_changed', function () {
place = autocomplete.getPlace();
center = new google.maps.LatLng(place.geometry.location.lat(),place.geometry.location.lng());
map.setCenter(center);
map.setZoom(5);
});
//Add listener to search
searchform.addEventListener('submit', function() {
center = new google.maps.LatLng(place.geometry.location.lat(),place.geometry.location.lng());
map.setCenter(center);
map.setZoom(5);
});
//Reset the inpout box on click
input.addEventListener('click', function(){
input.value = "";
});
};
以下是一个JSFiddle,供您进行实验。
if(e.keyCode===13 && !e.triggered){
中添加return false
,但似乎没有任何作用。 - MAX POWERjavascript:void(0)
)来实现。 - Dr.Molle