谷歌JavaScript的地方自动完成:我可以从地名中删除的国家吗?(Google Places J

2019-06-24 12:39发布

我有以下的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在当用户已经选择了一个国家的下拉菜单中,所以没有任何人知道,如果有可能,如果你已经定义了一个只显示城市名称componentRestrictions值限制的结果,一个国家?

我觉得我目前的设置是,一旦已经做出选择是有点......垃圾真正的方法...

Answer 1:

当调用谷歌API,指定属性“区”:

<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)"]
        }
    );



Answer 2:

您也可以通过CSS帮助自己 - 躲在自动完成项目的最后一个跨距(=状态)。

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


Answer 3:

简短的回答是:在响应内容Autocomplete是由谷歌(你在你的意见之一提到这一点),并且控制Autocomplete API的文档没有提供一个方法来定制显示的响应文本,不是改变对方占位符文本 DEV-指南 。 您正在使用的解决方案是关于你的最佳选择(是有点反应,但我不知道它真正的“垃圾”)。

除此之外,如果你不太满意这种做法,你总是可以只创建自己的输入区域,并采取请求 - 响应的完全控制来回自己。 您可以使用商家信息库开发导向直接采取所显示的一切完全控制。



Answer 4:

我等待100个milleseconds,然后替换我想要的内容的文本框中。

除了在我的情况下,我想一个空白框,而是插入一个空格。



文章来源: Google Places JavaScript Autocomplete: can I remove the country from the place name?