如果是“order_by”& “sort”参数可以在api查询字符串中传递。
“order_by”应接受以下选项:距离|签到|名称
“sort”应该接受以下选项:asc |降序
匹配的结果集应该在将结果集缩小到返回的最大“50”结果之前应用order_by和sort参数。
这是在foursquare雷达上还是不会提供?
我们正在构建一个应用程序,让用户根据设备的地理位置找到离他们最近的“餐馆”。
我们遇到的问题是设置默认半径。我们首先将半径设置为3200米,希望这可以为稀疏位置返回一些结果,同时也为密集位置返回最接近的结果。
这适用于返回小于50的位置,因为我们可以对后期响应进行排序,但是在华盛顿特区等密集区域,当有超过50个结果时,api决定返回的50不是最接近的LL
因此,我们必须构建我们的查询,如下所示(这很糟糕,因为它需要最多7次点击到api)才能找到不到50个结果的“最佳点”。
这是我们在应用中遇到“靠近我”位置的问题。我们在尝试在应用中展示“热门”场地时遇到类似问题,但我会将其保存在另一个帖子中。
ob_start();
require_once 'includes/EpiCurl.php';
require_once 'includes/EpiFoursquare.php';
$clientId = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx';
$clientSecret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
$fsObjUnAuth = new EpiFoursquare($clientId, $clientSecret);
$time_start2 = microtime(true);
$result = $fsObjUnAuth->get('/venues/search', array(
'categoryId' => '4d4b7105d754a06374d81259',
'limit' => '50',
'radius' => '100',
'intent' => 'checkin',
'll' => $ll,
'v' => '20120211'
));
$result_count1 = count($result->response->venues);
if ($result_count1 < 30) {
$result = $fsObjUnAuth->get('/venues/search', array(
'categoryId' => '4d4b7105d754a06374d81259',
'limit' => '50',
'radius' => '200',
'intent' => 'checkin',
'll' => $ll,
'v' => '20120211'
));
$result_count2 = count($result->response->venues);
if ($result_count2 < 30) {
$result = $fsObjUnAuth->get('/venues/search', array(
'categoryId' => '4d4b7105d754a06374d81259',
'limit' => '50',
'radius' => '400',
'intent' => 'checkin',
'll' => $ll,
'v' => '20120211'
));
$result_count3 = count($result->response->venues);
if ($result_count3 < 30) {
$result = $fsObjUnAuth->get('/venues/search', array(
'categoryId' => '4d4b7105d754a06374d81259',
'limit' => '50',
'radius' => '800',
'intent' => 'checkin',
'll' => $ll,
'v' => '20120211'
));
$result_count4 = count($result->response->venues);
if ($result_count4 < 30) {
$result = $fsObjUnAuth->get('/venues/search', array(
'categoryId' => '4d4b7105d754a06374d81259',
'limit' => '50',
'radius' => '1200',
'intent' => 'checkin',
'll' => $ll,
'v' => '20120211'
));
$result_count5 = count($result->response->venues);
if ($result_count5 < 30) {
$result = $fsObjUnAuth->get('/venues/search', array(
'categoryId' => '4d4b7105d754a06374d81259',
'limit' => '50',
'radius' => '1600',
'intent' => 'checkin',
'll' => $ll,
'v' => '20120211'
));
$result_count6 = count($result->response->venues);
if ($result_count6 < 30) {
$result = $fsObjUnAuth->get('/venues/search', array(
'categoryId' => '4d4b7105d754a06374d81259',
'limit' => '50',
'radius' => '3200',
'intent' => 'checkin',
'll' => $ll,
'v' => '20120211'
));
$result_count7 = count($result->response->venues);
}
}
}
}
}
}
答案 0 :(得分:1)
没有计划提供这样的参数。在大多数情况下,这些参数仅对开发人员刮取区域中的所有场地非常有用,这违反了foursquare terms of service
提供了三种不同的“意图”,它们对应于需要不同类型排名的有效用例。
intent = checkin 会返回用户最多的场所列表 可能位于
intent = 浏览会返回a的最相关场地列表 要求的地区,不要偏离中心点的距离。
intent = 匹配会返回一个高可信度的结果 是基于查询的请求的相应foursquare场所