我的新项目需要从谷歌地图获取地址信息,但我们的服务仅从堪培拉的所有酒店接送或下车。 我的问题是我如何限制自动完成只选择堪培拉的酒店。
这是我的代码:
var defaultBounds = new google.maps.LatLngBounds(
new google.maps.LatLng(-35.3345571, 149.0334956, 15),
new google.maps.LatLng(-35.1910655, 149.1817188, 12));
var options = {
bounds: defaultBounds,
types: ['establishment'],
keyword:'hotel',
componentRestrictions: {
country: 'au'
}
};
var input = document.getElementById('dropoff_address2Fromgoogle');
var autocomplete = new google.maps.places.Autocomplete(input,options);
google.maps.event.addListener(autocomplete, 'place_changed', function () {
var place = autocomplete.getPlace();
document.getElementById('dropoff_address2Fromgoogle').value = place.name
+ ", " + place.formatted_address
+ ", " + place.address_components[5].short_name;
});
我使用边界来限制堪培拉的区域,但搜索结果仍会返回其他区域,而且类型过滤器只有设置似乎没有返回更多的结果然后我期待。
答案 0 :(得分:0)
以下sample code搜索所选城市的酒店。
基本上,示例代码分两个阶段调用Google Maps API:一个用于搜索城市(onPlaceChanged()
已被调用),另一个用于搜索酒店。在后一种搜索中,您将在与城市搜索中具有nearbySearch()
参数的Places对象和值为bounds
的{{1}}参数上调用types
。
答案 1 :(得分:0)
问题在于LatLngBounds期望西南角和东北角。
而不是:
var defaultBounds = new google.maps.LatLngBounds(
new google.maps.LatLng(-35.3345571, 149.0334956, 15),
new google.maps.LatLng(-35.1910655, 149.1817188, 12));
它应该是:
var defaultBounds = new google.maps.LatLngBounds(
new google.maps.LatLng(-35.1910655, 149.0334956),
new google.maps.LatLng(-35.3345571, 149.1817188));