我正在尝试从模糊事件的Google地图自动填充字段以及自动填充字段中的 place_changed 获得第一个结果,并部分成功。
但是我遇到了一个问题,当模糊事件被触发时,我从自动完成字段中的第一个选项获得第一个结果,但结果不正确,所以我没有得到确切的lat长。
例如,如果我搜索单词" Nimblechapps"结果来自place_change事件是" Nimblechapps私人有限公司,Prahlad Nagar,艾哈迈达巴德,印度古吉拉特邦" ,但是当模糊事件被解雇时,我得到的结果是 " Nimblechapps Pvt LtdPrahlad Nagar,Ahmedabad,Gujarat,India" 。您可以看到两个结果的差异。在 Pvt之后,有一点点逗号。有限公司即可。
以下是我的代码来实现它。我参考了here
autocomplete = new google.maps.places.Autocomplete((document.getElementById('location')),{types: []});
google.maps.event.addListener(autocomplete, 'place_changed', onPlaceChanged);
$('#location').on('blur', function () {
var firstResult = $(".pac-container .pac-item:first").text();
geocoder.geocode({"address": firstResult}, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
infoWindow.close();
marker.setVisible(false);
var place = results[0];
if (!place.geometry) {
return;
}
if (place.geometry.viewport) {
map.fitBounds(place.geometry.viewport);
} else {
map.setCenter(place.geometry.location);
map.setZoom(12);
}
$('#lat').html(place.geometry.location.lat());
$('#long').html(place.geometry.location.lng());
$('#fLat').val(place.geometry.location.lat());
$('#fLong').val(place.geometry.location.lng());
marker.setPosition(place.geometry.location);
marker.setVisible(true);
var address = '';
console.log(place.geometry.location.toString());
if (place.address_components)
{
address = [
(place.address_components[0] && place.address_components[0].short_name || ''),
(place.address_components[1] && place.address_components[1].short_name || ''),
(place.address_components[2] && place.address_components[2].short_name || '')
].join(', ');
}
$('#location').val(firstResult);
infoWindow.close();
infoWindow.setContent('<div><strong>' + place.name + '</strong><br>' + address);
infoWindow.open(map, marker);
infoWindow.close();
}
});
});
修改: var firstResult = $(".pac-container .pac-item:first").text();
我在firstResult变量中得到错误的结果