使用地点自动完成 API 获取地址组件
Using Place Autocomplete API to get Address Components
我正在尝试创建一个使用 Google 自动完成 API 的表单,以便在他们单击机构名称后填充一堆文本字段。我对 Javascript 不是很熟悉,所以这个对我来说有点困难。
照原样,我目前正在获取它以将名称填充到输入框中以及纬度和经度。但是其他所有内容(地址、地址 2、城市、州)都会填充“未定义”。关于如何将这些值填充到这些输入字段中的任何想法。
<html>
<head>
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=API&libraries=places"></script>
<script>
function initialize() {
var input = document.getElementById('searchTextField');
const options = {
componentRestrictions: { country: "us" },
fields: ["address_components", "geometry", "icon", "name"],
strictBounds: false,
types: ["establishment"],
};
var autocomplete = new google.maps.places.Autocomplete(input, options);
google.maps.event.addListener(autocomplete, 'place_changed', function () {
var place = autocomplete.getPlace();
document.getElementById('locationName').value = place.name;
document.getElementById('addr').value = place.adr_address;
document.getElementById('addr2').value = place.address2;
document.getElementById('city').value = place.city;
document.getElementById('state').value = place.state;
document.getElementById('lat').value = place.geometry.location.lat();
document.getElementById('long').value = place.geometry.location.lng();
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<input id="searchTextField" type="text" size="50" placeholder="Enter a location" autocomplete="on" runat="server" />
<input type="text" id="locationName" name="locationName" />
<input type="text" id="addr" name="addr" />
<input type="text" id="addr2" name="addr2" />
<input type="text" id="city" name="city" />
<input type="text" id="state" name="state" />
<input type="hidden" id="lat" name="lat" />
<input type="hidden" id="long" name="long" />
</body>
</html>
我已经弄明白了,以防有人在路上寻找答案。
我使用了 console.log(place)
并且能够弄清楚我试图错误地访问 address_components
对象。例如,城市信息将通过 place.address_components[4].long_name
.
访问
整体修复非常简单。
我正在尝试创建一个使用 Google 自动完成 API 的表单,以便在他们单击机构名称后填充一堆文本字段。我对 Javascript 不是很熟悉,所以这个对我来说有点困难。
照原样,我目前正在获取它以将名称填充到输入框中以及纬度和经度。但是其他所有内容(地址、地址 2、城市、州)都会填充“未定义”。关于如何将这些值填充到这些输入字段中的任何想法。
<html>
<head>
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=API&libraries=places"></script>
<script>
function initialize() {
var input = document.getElementById('searchTextField');
const options = {
componentRestrictions: { country: "us" },
fields: ["address_components", "geometry", "icon", "name"],
strictBounds: false,
types: ["establishment"],
};
var autocomplete = new google.maps.places.Autocomplete(input, options);
google.maps.event.addListener(autocomplete, 'place_changed', function () {
var place = autocomplete.getPlace();
document.getElementById('locationName').value = place.name;
document.getElementById('addr').value = place.adr_address;
document.getElementById('addr2').value = place.address2;
document.getElementById('city').value = place.city;
document.getElementById('state').value = place.state;
document.getElementById('lat').value = place.geometry.location.lat();
document.getElementById('long').value = place.geometry.location.lng();
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<input id="searchTextField" type="text" size="50" placeholder="Enter a location" autocomplete="on" runat="server" />
<input type="text" id="locationName" name="locationName" />
<input type="text" id="addr" name="addr" />
<input type="text" id="addr2" name="addr2" />
<input type="text" id="city" name="city" />
<input type="text" id="state" name="state" />
<input type="hidden" id="lat" name="lat" />
<input type="hidden" id="long" name="long" />
</body>
</html>
我已经弄明白了,以防有人在路上寻找答案。
我使用了 console.log(place)
并且能够弄清楚我试图错误地访问 address_components
对象。例如,城市信息将通过 place.address_components[4].long_name
.
整体修复非常简单。