Sería extremadamente útil si un parámetro de "ordenar" & "sort" se pudiera pasar en la cadena de búsqueda de API.¿Hay un parámetro api order_by/sort en las obras?
"order_by" debe aceptar las siguientes opciones: distancia | checkins | nombre
"ordenar" debe aceptar las siguientes opciones: asc | desc
El conjunto de resultados coincidentes debe tener los parámetros order_by y sort aplicados antes de limitar el resultado al máximo "50" resultados que se devuelven.
¿Está esto en el radar cuadrangular o es algo que no se ofrecerá?
Estamos construyendo una aplicación que permite a los usuarios ubicar los "restaurantes" más cercanos según la geolocalización del dispositivo.
El problema que estamos teniendo es establecer el radio predeterminado. Comenzamos estableciendo el radio a 3200 metros, con la esperanza de que eso devuelva algunos resultados para ubicaciones dispersas al tiempo que se devuelven los resultados más cercanos para ubicaciones densas.
Esto funciona para ubicaciones que devuelven menos de 50 porque podemos ordenar la respuesta de publicación, pero en un área densa como Washington DC, cuando hay más de 50 resultados, los 50 que la API decide devolver NO son los más cercanos a el ll.
Por lo tanto, tenemos que estructurar nuestra consulta como se muestra a continuación (que apesta porque requiere hasta 7 visitas a la API) para tratar de encontrar ese "punto óptimo" de menos de 50 resultados.
Este es el problema que nos encontramos para las ubicaciones "cercanas a mí" en nuestra aplicación. Tenemos un problema similar cuando intentamos mostrar lugares "populares" en la aplicación, pero lo guardaré para otra publicación.
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);
}
}
}
}
}
}
No debería pedirse en un foro en cuadro? – rene
Supongo que te estás refiriendo a los/lugares/punto final de búsqueda en particular? o todos los puntos finales de búsqueda? – akdotcom
Sí, solo me estoy refiriendo a/endpoints/punto final de búsqueda –