1

我有一个指令调用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 图 1

图 2 图 2

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

我只想要点击的位置,而不是所有的数据。这太让我费钱了。有没有办法可以避免在点击自动完成时调用 Google 地方信息?

4

1 回答 1

0

您可以指定仅检索该Geometry字段,但使用 Google 的自动完成小部件,您无法避免在点击预测项目时调用 Google Places 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小部件。

我写了一篇博文来解释如何实现此功能以及许多其他技巧和窍门,以降低您的 Google 地图自动完成功能的成本。

于 2019-11-14T09:05:11.317 回答