Google maps api 3 谷歌地图自动完成:只输出地址,不包括国家和城市

Google maps api 3 谷歌地图自动完成:只输出地址,不包括国家和城市,google-maps-api-3,Google Maps Api 3,我使用自动完成地址输入。搜索仅限于一个城市,我得到如下输出: 罗西娅,莫斯科,列宁斯基省28号 如何隐藏“莫斯科罗西娅” 我的问题是: function() { // Search bounds var p1 = new google.maps.LatLng(54.686534, 35.463867); var p2 = new google.maps.LatLng(56.926993, 39.506836); self.optio

我使用自动完成地址输入。搜索仅限于一个城市,我得到如下输出:

罗西娅,莫斯科,列宁斯基省28号

如何隐藏“莫斯科罗西娅”

我的问题是:

function() {
        // Search bounds
        var p1 = new google.maps.LatLng(54.686534, 35.463867);
        var p2 = new google.maps.LatLng(56.926993, 39.506836);
        self.options = {
            bounds : new google.maps.LatLngBounds(p1, p2),
            componentRestrictions: {country: 'ru'},
        };

        var elements = document.querySelectorAll('.address');

        for ( var i = 0; i < elements.length; i++) {
            var autocomplete = new google.maps.places.Autocomplete(elements[i],
                    self.options);
        }
function(){
//搜索边界
var p1=新的google.maps.LatLng(54.686534,35.463867);
var p2=新的google.maps.LatLng(56.926993,39.506836);
self.options={
边界:新的google.maps.LatLngBounds(p1,p2),
组件限制:{country:'ru'},
};
var elements=document.querySelectorAll('.address');
对于(var i=0;i
编辑

你不能。我有另一种说法,你只是在寻找一个城市。没有办法只打印出地址组件中的街道名称(我假设这是一个街道名称)


与所问内容相反

(cities)类型集合指示Place服务返回与
地区
行政区域3
匹配的结果


结果你得到了散列,从中你可以得到你想要的部分:

 google.maps.event.addListener(autocomplete, 'place_changed', function() {
          var place = autocomplete.getPlace();
现在从“地方”你可以得到它

place.geometry.location.lat()
地址呢

place.address_components[0] or place.address_components[1] ...

取决于您想要获得的内容,您可以,但必须在两处替换输入字段的值。 例如:

在“更换地点”事件中,您可以执行以下操作:

placeResult = autocomplete.getPlace();
//This will get only the address
input.value = placeResult.name;
这会将searchtextfield中的值更改为street

第二位有点棘手:

input.addEventListener('blur', function(){
// timeoutfunction allows to force the autocomplete field to only display the street name.
if(placeResult){ setTimeout(function(){ input.value = placeResult.name; }, 1); }
我们必须这样做的原因是,如果您只为blur添加事件侦听器,google places将用完整地址填充输入字段,因此您必须“等待”google更新,然后通过等待几秒钟来强制更改


在没有设置超时功能的情况下尝试一下,您就会明白我的意思。

内部位置\u更改设置超时功能:

var streetString = place.address_components[0] or place.address_components[1];

window.setTimeout(function() {
  $('input').val(streetString);
}, 200);

这个解决方案对我很有效。

我有一个非常类似的问题,确实是可以解决的。这在Angular 2项目中,但也应该适用于其他地方。我对结果中的机构进行筛选,只想显示结果中的名称并隐藏地址部分。这对我来说很有用,一个函数在您选择一个建议:

   getAddress(place: Object) {
    this.zone.run(() => {
        this.establishment = place['name'];
    });

其中,
zone
是注入构造函数中的NgZone组件,
this.building
是绑定到
[(NgModel)]的变量
在输入字段中。

这里的文档说了以下内容,请尝试
邻近:一个地方的简化地址,包括街道名称、街道号码和地点,但不包括省/州、邮政编码或国家。例如,谷歌的澳大利亚悉尼办事处的邻近值为皮尔蒙特皮拉马路5/48。
谢谢,我没有ried,但邻近性是Place属性,在我的例子中,autocomplete.getPlace()返回未定义。尚未找到解决方案。您可以从中推断,用您所需的信息构建自己的autocomplete小部件。我喜欢说“您不能”的坚定答案……最糟糕的是,这个答案被接受了。
var streetString = place.address_components[0] or place.address_components[1];

window.setTimeout(function() {
  $('input').val(streetString);
}, 200);
   getAddress(place: Object) {
    this.zone.run(() => {
        this.establishment = place['name'];
    });