KM1*_*123 1 html javascript jquery google-maps google-maps-api-3
我需要一些有关Google Maps API以及使用自动填充和地址完成的帮助.
这是我目前的代码:
JS
function fillInAddress(show) {
console.log(show);
var place = autocomplete.getPlace();
for (var i = 0; i < place.address_components.length; i++){
var base = place.address_components[i].types[0];
if(base === "postal_code"){
console.log(place.address_components[i].long_name);
}
}
}
function initialize(out) {
autocomplete = new google.maps.places.Autocomplete(
(document.getElementById(out)),
{types: ['geocode']});
google.maps.event.addListener(autocomplete, 'place_changed', function () {
fillInAddress(out);
});
}
initialize("from");
initialize("to");
Run Code Online (Sandbox Code Playgroud)
HTML
<input type="text" id="from" class="location">
<input type="text" id="to" class="location">
<input id="fromPc" type="text">
<input id="toPc" type="text">
Run Code Online (Sandbox Code Playgroud)
地点下拉列表工作正常,允许您输入,然后将提出建议.
但是当我点击from输入中的一个建议时,我在控制台中收到此错误.
Uncaught TypeError: Cannot read property 'address_components' of undefined
Run Code Online (Sandbox Code Playgroud)
但是,当我在"输入"框中执行此操作时,它可以正常工作并返回邮政编码.
如果我然后返回第一个输入"from"然后再次输入地址,它会返回一个邮政编码,但它会从第二个输入"to"返回邮政编码.
有谁知道如何解决这个问题.
我提前感谢您的帮助!
你正在覆盖autocomplete里面的(全局)变量initialize.
将变量置于局部内部initialize并将其作为参数传递给fillInAddress
function fillInAddress(show,ac) {
var place = ac.getPlace();
for (var i = 0; i < place.address_components.length; i++){
var base = place.address_components[i].types[0];
if(base === "postal_code"){
document.getElementById(show+'Pc').value
= place.address_components[i].long_name;
return;
}
}
}
function initialize(out) {
var autocomplete = new google.maps.places.Autocomplete(
(document.getElementById(out)),
{types: ['geocode']});
google.maps.event.addListener(autocomplete, 'place_changed',
function () {
document.getElementById(out+'Pc').value='';
fillInAddress(out,autocomplete);
});
}
initialize("from");
initialize("to");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4450 次 |
| 最近记录: |