Google自动填充,在点击位置时会调用Google地方信息

时间:2018-11-26 21:08:23

标签: google-places googleplacesautocomplete

我有一条调用google.maps.places.Autocomplete的指令:

var options = {
    fields: ['formatted_address']
  };

scope.gPlace = new google.maps.places.Autocomplete(element[0], options);
google.maps.event.addListener(scope.gPlace, 'place_changed', function() {
      scope.$apply(function() {
        model.$setViewValue(element.val());
      });
    });

图片1 Image 1

图片2 Image 2

在图1中,您会看到键入时得到的网络呼叫,这很好,但是在图2中,您将看到另一个Google地方信息网络调用,当我单击所需的位置时会触发该网络调用。

我只希望单击的位置,而不是所有数据。花了我太多钱。有什么方法可以避免在单击自动完成功能时致电Google地方信息?

1 个答案:

答案 0 :(得分:0)

您可以指定仅检索Geometry字段,但使用Google的“自动完成”小部件,就无法避免在预测项目点击时调用Google地方信息的getDetails。

scope.gPlace = new google.maps.places.Autocomplete(element[0], options);
scope.gPlace.setFields(['geometry']);
scope.gPlace.addListener('place_changed', function() {
    const place = autocomplete.getPlace();
    //console.log(place.geometry.location);
  });

为降低成本,您可以使用Google地理编码API来获取地址信息(位置),而不是从“自动填充”中获取getDetails()。 您需要实现AutocompleteService而不是Autocomplete小部件。

我写了blog post来解释如何实现此功能,以及许多其他技巧和窍门,以降低Google Maps自动完成功能的成本。