谷歌地图Places API V3自动完成 - 限制只允许选择堪培拉的酒店

时间:2014-12-16 01:34:38

标签: javascript google-maps google-maps-api-3

我的新项目需要从谷歌地图获取地址信息,但我们的服务仅从堪培拉的所有酒店接送或下车。 我的问题是我如何限制自动完成只选择堪培拉的酒店。

这是我的代码:

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;

});

我使用边界来限制堪培拉的区域,但搜索结果仍会返回其他区域,而且类型过滤器只有设置似乎没有返回更多的结果然后我期待。

2 个答案:

答案 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));