Google Maps API - 多个关键字到位搜索

时间:2013-10-28 00:03:17

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

是否可以使用Google Maps JavaScript API v3在一个地方搜索请求中搜索多个单独的关键字?

在Google Places API文档中,它指出可以使用多个关键字https://developers.google.com/places/training/additional-places-features

?keyword=theater+gym

但这在JavaScript API中不起作用。我试过了:

function performSearch() {
  var request = {
    location: map.center,
    radius: '500',
    keyword: 'theater+gym+tacos',
    rankBy: 'distance'
  };
  service.radarSearch(request, callback);
}

...并且不会为每个关键字返回位置。有没有人知道如何搜索多个关键字?

注意:我正在尝试在一个请求中搜索多个单独的关键字,而不是使用空格的短语。

6 个答案:

答案 0 :(得分:9)

看起来答案是“不”(至少在目前,您可以申请enhancement on the issue tracker

解决方法是发送三个单独的查询,每个查询对应一个关键字。对于3个关键字应该没问题,在某些时候你会遇到查询速率限制。

  var request = {
    location: pyrmont,
    radius: 500,
    keyword: 'theater'
  };
  infowindow = new google.maps.InfoWindow();
  var service = new google.maps.places.PlacesService(map);
  service.nearbySearch(request, callback);
  var request2 = {
    location: pyrmont,
    radius: 500,
    keyword: 'gym'
  };
  var service2 = new google.maps.places.PlacesService(map);
  service2.nearbySearch(request2, callback);
  var request3 = {
    location: pyrmont,
    radius: 500,
    keyword: 'tacos'
  };
  var service3 = new google.maps.places.PlacesService(map);
  service3.nearbySearch(request2, callback);

proof of concept

答案 1 :(得分:7)

使用Google Place API,使布尔搜索看起来像这样:

var request = {
            location: /*your location*/,
            radius: /*your radius*/,              
            keyword: "(cinema) OR (theater)"           
        };

你可以使用OR,AND但尊重案例!!

再见,netoale

答案 2 :(得分:3)

编辑:这似乎最初起作用,但更多结果不可靠且无法预测。我们最终无法以这种方式使用API​​用于我们的场景。

我使用Web服务,但我认为它应该适用于所有API访问点。我花了不少组合进行测试,但最终我实现了API所需的括号和引号,以使多字OR条件起作用。

例如,在url param形式中:

keywords =(“Place Name 1”)OR(“PlaceName2”)OR(“Place Name3”)

答案 3 :(得分:3)

我遇到了同样的问题,因为我试图弄清楚如何在一个请求中使用多个关键字。起初@netoale的答案对我有所帮助,但这不再可能。在Google遇到一些一般性问题后,我向支持人员询问,其中一名员工给我写信说,可以用一个简单的“ |”链接几个关键字。

例如:

https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=lat,lng&key=API_KEY&keyword=theater|castle|park&rankby=distance

现在为我工作。

答案 4 :(得分:1)

您是否尝试过类型选项?如果使用类型,您可以获得多个地点信息

请参阅可能的supported typesRadarSearchRequests 试试这个

function performSearch() {
  var request = {
    location: map.center,
    radius: '500',
    types: ['movie_theater', 'gym'],
    rankBy: 'distance'
  };
  service.radarSearch(request, callback);
}

我不知道'tacos'是哪种类型。请支持类型并给出'tacos'类型值。

如果您有任何问题,请告诉我

答案 5 :(得分:0)

我认为这与Google Maps API open issue 4845有关。请为该问题加注星标以跟踪进度。