我有一条调用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
图片2
在图1中,您会看到键入时得到的网络呼叫,这很好,但是在图2中,您将看到另一个Google地方信息网络调用,当我单击所需的位置时会触发该网络调用。
我只希望单击的位置,而不是所有数据。花了我太多钱。有什么方法可以避免在单击自动完成功能时致电Google地方信息?
答案 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自动完成功能的成本。