Google商家信息过滤结果

时间:2016-09-02 02:43:35

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

我正在使用Google Maps JS API以及我正在使用地理定位功能和地方资料库。这刚刚开始发生在过去的24小时,在那里计算地理位置,然后代码搜索附近的啤酒厂我得到了很多随机的东西(不仅仅是我,虽然已经有其他人在那里的地区测试问题)美国)。最后我检查了麦当劳没有提供啤酒!我回头看看并且没有对任何管理这个问题的代码进行更改,因此我对正在发生的事情感到头疼。

Google没有'啤酒厂'作为一种类型,所以我使用关键字属性,并且要搜索的值是'啤酒厂'。我甚至试图寻找啤酒厂' &安培; '酿造'因为我所在城市的实际酿酒厂使用其中任何一个名称。这种策略实际上使事情变得更糟。我尝试在实际啤酒厂和type[]财产之间找到相关性,但没有运气。 type属性中的大多数元素返回为bar,restaurant,establishment,point-of-interest。

所以我想知道的是:有没有一种方法可以说一下“River City Brewing Co。''并在其中搜索特定的字符串值' brewery'并且'酿造'。我试图找到一种方法来过滤结果,因为我的代码(最有可能)或谷歌在搜索本地啤酒厂的结果时都会喝醉。

所以代码明智我想尝试做类似的事情:

function filter(search_results)
{
    if(brewery_data.name ??? 'brewery' || 'brewing')
    {
        // send to results
        return true;
    {
    else
    {
        // reject
        return false;
    }
}

有没有人对如何做到有任何建议或想法?我已经在GH页面上留下了代码链接以供审核。 Maps.js现在包含所有映射功能,app.js是主脚本,其他所有其他目前都是存储类型,而不是由index.html调用。我很感激帮助,因为这真的让我觉得如何击败这个bug。如果我在Google代码中错过了导致此问题的内容,我宁愿修复此问题,但最终我必须找到一种方法来过滤结果,以使我的应用正常工作,而不是将我的用户发送给麦当劳对于巨无霸和IPA!

代码: https://github.com/rockchalkwushock/Bro2Brew_App/tree/staging 网络应用: https://rockchalkwushock.github.io/Bro2Brew_App/

1 个答案:

答案 0 :(得分:1)

从来没有弄清楚为什么我会为关键字返回这么多古怪的结果:'breweries',但我找到了一种用toString.prototype.includes()过滤结果的方法。你可以在下面看到我如何使用它。如果有人有更好的方法去过滤或知道我为什么要取回与我的关键字属性相差无几的结果,请随时分享!

function callbackResults(results, status)
{
  if (status == google.maps.places.PlacesServiceStatus.OK)
  {
    for (var i = 0; i < results.length; i++)
    {
      var place = results[i];
      var placeid = place.place_id;
      var name = place.name;

      if (name.includes("Brewery") || name.includes("Brewing"))
      {
        // console.log(name);
        apiMarkerCreate(place.geometry.location, place);
        addPlaceDetails(placeid);
      }
    }
    return true;
  }
  else
  {
      return false;
  }
}