【问题标题】:Google Places API: How to use multiple types?Google Places API:如何使用多种类型?
【发布时间】:2015-10-15 23:41:19
【问题描述】:

我需要一个 POI API 来返回评分、照片、打开/关闭时间等,我认为 Google Places API 似乎可以满足我的要求,但我在过滤时遇到了一些问题:我想使用自动完成功能多种过滤类型。

这是我所拥有的:

var map;
var selectAttractionAutocomplete;
var selectCityAutocompleteOptions = {
    types: ['(cities)']
};

map = new google.maps.Map(document.getElementById('map-canvas'), {
    center: new google.maps.LatLng(-33.8665433, 151.1956316),
    zoom: 15
});

var inputsearchedCity = document.getElementById('input-searched-city');
selectCityAutocomplete = new google.maps.places.Autocomplete(inputsearchedCity, selectCityAutocompleteOptions);
selectCityAutocomplete.bindTo('bounds', map);

google.maps.event.addListener(selectCityAutocomplete, 'place_changed', function () {
    console.log(selectCityAutocomplete.getPlace());
});

如何使用多种类型?

我尝试过管道、逗号、方括号...没有任何效果:

var selectCityAutocompleteOptions = {
    types: ['cities|point_of_interest']
};

【问题讨论】:

  • 根据documentation "一般只允许使用一种类型。例外是您可以安全地混合使用 'geocode' 和 'establishment' 类型,但请注意,这将与不指定类型具有相同的效果。”
  • 虽然它应该接受一个字符串数组,但要指定你需要像types: ['cities', 'point_of_interest']
  • 我试过逗号,但“城市”本身不起作用。 “城市”必须是“(城市)”。

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


【解决方案1】:

如果您在查询字符串中使用,请使用 |分隔器。请记住,目前只有 'geocode|establishment' 作为集合类型是有效的,这与不指定任何组合类型相同。

见: https://developers.google.com/places/web-service/autocomplete#place_types

您可以通过传递 types 参数来将 Place Autocomplete 请求的结果限制为特定类型。该参数指定类型或类型集合,如下面支持的类型中所列。如果未指定任何内容,则返回所有类型。通常只允许使用一种类型。例外情况是您可以安全地混合地理编码和机构类型,但请注意,这与不指定类型具有相同的效果。

【讨论】:

  • 这就是答案!
【解决方案2】:

根据Google Documentationpoint_of_interest属于类型2,地点搜索的types过滤器或添加地点时的types属性不支持。

【讨论】:

  • 那么,现在如何获取多个类型呢?
【解决方案3】:

最近遇到这个。答案在这里Google Places Auto-Complete

类型,可以指定两种显式类型之一 两种类型集合之一

【讨论】:

    【解决方案4】:

    this thread 部分回答了这个问题。

    首先,它不支持的“城市”的地点类型。您可以找到支持的地点类型列表here

    没有办法同时使用多种类型。但是,您可以调用 API 两次以获得相似的结果。例如:

    var selectCityAutocompleteOptions1 = {
      types: ['zoo']
    };
    var selectCityAutocompleteOptions2 = {
      types: ['museum']
    };
    

    不过,根据您的描述,您似乎想要所有兴趣点结果,而不是按类型过滤。在这种情况下,您可能想改用Find Place Requests Place Search

    【讨论】:

      【解决方案5】:
      var request = {
          bounds: map.getBounds(),
          types: ['bar','park']
            //keyword: 'best view'
        };
      

      【讨论】:

      • 请解释您的贡献如何回答这个问题。
      猜你喜欢
      • 1970-01-01
      • 2016-10-07
      • 1970-01-01
      • 2015-07-30
      • 1970-01-01
      • 2015-11-09
      • 2013-04-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多