公寓号码

时间:2015-06-26 18:50:26

标签: google-maps-api-3 autocomplete street-address

当用户在其地址中添加公寓号码时,自动填充似乎认为它正在查看邮政编码,并更改建议的匹配项:

  

6250 Hollywood Boulevard#20

有没有办法让这个工作,或者如果没有,一种方法来忽略公寓号码并将其与表单提交一起作为单独的值发送? (请记住,用户可能会使用#,Unit,Apt等来定义其单位编号)

var placeSearch, autocomplete;

var componentForm = {
    street_number:                  'short_name',
    route:                          'short_name',
    locality:                       'long_name',
    administrative_area_level_1:    'short_name',
    country:                        'long_name',
    postal_code:                    'short_name'
};

function initialize(){

    autocomplete = new google.maps.places.Autocomplete(
        (document.getElementById('autocomplete-address')),
        { types: ['geocode'] });
        google.maps.event.addListener(autocomplete, 'place_changed', function(){
            fillInAddress();
        }
    );

}

function fillInAddress(){

    var place = autocomplete.getPlace();

    for(var component in componentForm){

        document.getElementById(component).value = '';
        document.getElementById(component).disabled = false;

    }

    for(var i = 0; i < place.address_components.length; i++){

        var addressType = place.address_components[i].types[0];

        if(componentForm[addressType]){

            var val = place.address_components[i][componentForm[addressType]];

            document.getElementById(addressType).value = val;

        }

    }

}

1 个答案:

答案 0 :(得分:1)

似乎没有设置将Autocomplete API设置为忽略apt号,但是,我们可以在将字符串传递给API之前修剪文本。

在您的autocomplete = new google.maps.places.Autocomplete(中,您可以执行以下操作:

document.getElementById('autocomplete-address').replace(/#.*/g,"");

由于document.getElementById('autocomplete-address')返回一个字符串,我们可以用#number

的空字符串替换.replace(/#.*/g,"") paer