0

使用foursquare api php

我正在搜索具有夜生活类别的场所:

$params = array("near"=>"92101", "radius"=>"800", "intent"=>"checkin",
                "categoryId"=>"4d4b7105d754a06376d81259", "limit"=>"50");

$venues = $foursquare->GetPublic("venues/search", $params);

按预期工作......有点。问题是被归类为酒吧的餐厅正在填补我的退货限制。所以在那次搜索中,我可能只会得到一些实际的夜生活场所。如果我可以省略具有某些类别的场地,那将非常有帮助。获得 50 个夜生活场所,但不是那些也被标记为食物的场所。

我已经四处搜索并继续重新阅读搜索端点页面,希望我忽略了省略功能。有什么帮助吗?

4

1 回答 1

0

我们有同样的问题(不同的类别类型)

我们最终做的是针对特定类别执行多次搜索。categoryId 字段接受多个以逗号分隔的类别,因此我们有时会使用多个 categoryId 执行多达 3 次搜索。

因此,就要求一个类别而言,您的请求看起来像(没有“酒吧”,我只是选择了几个随机的夜生活类别):

$params = array("near"=>"92101", "radius"=>"800", "intent"=>"checkin",
                "categoryId"=>"4bf58dd8d48988d11f941735,4bf58dd8d48988d121941735,...", "limit"=>"50");

然后对一般的夜生活再做一个请求

$params = array("near"=>"92101", "radius"=>"800", "intent"=>"checkin",
                "categoryId"=>"4d4b7105d754a06376d81259", "limit"=>"50");

并合并结果。

此解决方案需要注意两点:

  1. 您可能(可能)从多个搜索中获得重叠的结果,因为场所有时有多个类别(正如您已经发现的那样),请记住处理多个结果。我们首先扫描所有结果并根据foursquare ID保留唯一的结果,然后开始我们的处理。
  2. 此解决方案无法与foursquare API 很好地扩展 - 进行 40 次搜索将无法正常工作.. (但没有它就没有其他方法可以获得您需要的东西,所以我仍然在这里编写整个解决方案)
于 2012-05-27T07:34:12.417 回答