google map Autocomplete 地址自动填充 address 省,市,邮编
<input id="Input_SearchCityState" type="text" style="width:800px;height:4rem" />
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBxbR_ZOT7SHiby4QYL1aIsS-QHUR86Nl8&callback=InitAutocompleteCityState&libraries=places&language=en" defer ></script>
<script>
function InitAutocompleteCityState() {
var OptionsCity = {
types: ["address"],
componentRestrictions: { country: "us" }
};
CityAutocomplete = new google.maps.places.Autocomplete((document.getElementById('Input_SearchCityState')), OptionsCity);
CityAutocomplete.addListener('place_changed', function () { FillInGoogleAddress(CityAutocomplete); });
}
function FillInGoogleAddress (acomplete) {
var place = acomplete.getPlace();
console.log(place);
// 将结果通过英文逗号截取,取第一个位置,譬如:Newark International Airport St, Newark, NJ 07114, USA ,截取:Newark International Airport St放到address里面
formatted_address = place.formatted_address;
console.log(formatted_address);
// xx路
// road = place.address_components.find(function (e) { return e.types[0] == "route" });
//console.log(road);
// 市区
// area = place.address_components.find(function (e) { return e.types[0] == "sublocality_level_1" });
//console.log(area);
// 城市 取long_name 填写到输入框
var city = place.address_components.find(function (e) { return e.types[0] == "locality" });
console.log(city);
// 省 如果省是下拉条,则取 short_name进行勾选,如果省是输入框,那么取long_name 填写
var state = place.address_components.find(function (e) { return e.types[0] == "administrative_area_level_1" });
console.log(state);
// 邮编
var zip = place.address_components.find(function (e) { return e.types[0] == "postal_code" });
console.log(zip.long_name); // vrzipcode.long_name
}
</script>