Google Places JavaScript自动填充功能:我可以从地名中删除国家/地区吗?

时间:2012-05-16 21:06:57

标签: javascript google-maps google-places-api

我有以下jQuery代码,可以很好地获取所选国家/地区的城市列表。

var city;   var place;

$('#city').on('focus',function(){
    input = this, options = {
        types: ['(cities)'],
        componentRestrictions: {
            country: $('#country option:selected').val()
            }
    };
    city = new google.maps.places.Autocomplete(input, options);
    google.maps.event.addListener(city, 'place_changed', function() {
        place = city.getPlace();
        $(input).val(place.address_components[0].long_name);
    })
})

基本上,一旦此人选择了该地点,它就会将输入框中的值替换为没有国家/地区的“城市”值。

当用户选择了一个国家/地区时,下拉菜单中的City, Country看起来有点愚蠢,如果您定义了{{1},那么是否有人知道是否可以显示城市名称将结果限制在一个国家?

我发现当前的选择设置有点......垃圾确实是我当前的设置方法......

4 个答案:

答案 0 :(得分:18)

调用Google API时,请指定属性“region”:

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?libraries=places&sensor=false&key=your_key&language=fr&region=FR"></script>

然后,当您创建Autocomplete对象时,请在componentRestriction属性中指定国家/地区,以便它反映您指定的区域:


    new google.maps.places.Autocomplete(
        $("#my-input-field").get(0),
        {
            componentRestrictions: {country: "fr"},
            types: ["(regions)"]
        }
    );

答案 1 :(得分:5)

此外,您可以通过css帮助自己 - 隐藏自动完成项目中的最后一个跨度(=状态)。

.pac-item > span:last-child {
    display: none;
}

答案 2 :(得分:3)

简短的回答是:Autocomplete中的回复内容由Google控制(您在其中一条评论中提及此内容)而Autocomplete api-doc未提供方式自定义显示的响应文本,而不是更改占位符文本 dev-guide。您使用的解决方案是关于您拥有的最佳选择(并且有点反应,但我不知道它是否真的“垃圾”)。

除此之外,如果您对该方法不满意,您可以随时创建自己的输入区域,并自己来回完全控制请求 - 响应。您可以直接使用地方资料库dev-guide,并完全控制所显示的所有内容。

答案 3 :(得分:1)

我等待100毫秒,然后用我想要的内容替换文本框。

除了我的情况,我想要一个空白框,但插入一个空格。