我正在我的网站上使用Google Map Java脚本自动完成
这是我的Java脚本代码,用于呈现google自动完成功能
<script src="https://maps.googleapis.com/maps/api/js?key={{GOOGLE_MAP_API_KEY}}&libraries=places" type="text/javascript"></script>
<script type="text/javascript">
function initialize() {
var options = {
types: ['(cities)'],
componentRestrictions: {country: "us"}
};
var input = document.getElementById('city');
var autocomplete = new google.maps.places.Autocomplete(input, options);
autocomplete.setFields(['address_components', 'geometry', 'icon', 'name']);
}
initialize();
</script>
并且html代码是
<input type="text" class="form-control" id="city" name="city" required="" value="" placeholder="City" autocomplete="off">
在“结算”部分,我需要付费
1.不带位置详细信息的Places API自动完成
2.Places API地方详情
我从未在网站的任何地方使用过地点详细信息请求。如何触发此请求?。
自动完成请求后会自动呼叫吗?我该如何预防呢?
我的网站使用地理位置api将地址转换为经纬度坐标。会使用地方详情api吗?
如何在不触发地点详细信息请求的情况下呼叫Google地图自动填充
答案 0 :(得分:4)
解决了该问题。每当您选择或单击“自动完成建议”时,即使您的代码中没有autocomplete.getPlace()函数,也会自动调用PlaceService.GetPlaceDetails。 此外,使用“自动完成”小部件,当用户选择一个预测时,该小部件将为您调用“地点详细信息”,这样,当您对place_changed事件调用autocomplete.getPlace()时,完整的“地点”结果将可用。 如果您不希望调用位置详细信息,请在初始化窗口小部件时使用{placeIdOnly:true}。
答案 1 :(得分:3)
placeIdOnly is deprecated(截至2019年1月15日),并且可以在“自动完成”构造函数中设置字段,此代码对我有用,并阻止了自动完成功能调用场所详细信息请求:
autocomplete = new google.maps.places.Autocomplete(
document.getElementById('Details_Location'), { fields: ["place_id"] });
答案 2 :(得分:0)
同样的问题。 我试试
autocomplete = new google.maps.places.Autocomplete(
document.getElementById('Details_Location'), { fields: ["place_id"] });
要获取geometry.location.lat() 和geometry.location.lng(),您可以使用单独的google.maps.Geocoder(),以及来自自动完成的字符串。 google.maps.Geocoder 比 Places Details 便宜。
代码如下:
autocomplete.addListener("place_changed", setMapCenter);
geocoder = new google.maps.Geocoder();
function setMapCenter() {
data = {
address: autocomplete_input_value
};
geocoder.geocode( data, function(results, status) {
if (status == 'OK') {
// var map = new google.maps.Map();
map.setCenter(results[0].geometry.location);
} else {
...
}
});
}