首页 文章

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

提问于
浏览
7

是否可以使用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);
}

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

Note: 我正在尝试在一个请求中搜索多个单独的关键字而不是带空格的短语 .

5 回答

  • 2

    看起来答案是"no"(至少在目前,你可以要求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

  • 9

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

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

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

    再见,netoale

  • 0

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

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

    例如,在url param形式中:

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

  • 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

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

相关问题