¿Cómo acceder a "Foursquare Userless Venues API v2" a través de JSON?

Estoy tratando de acceder a los lugares en Foursquare usando su fórmula API sin usuario en mi aplicación de mapas ASP MVC, pero no pude lograr que funcione.

Mi codigo es:

var fsObj = [];
var url = 'https://api.foursquare.com/v2/venues/search?ll=' + lat + ',' + lng + '&query=' + type + '&radius=' + distance + '&intent=browse&client_id=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&client_secret=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&v=20120304';
$.getJSON(url, {}, function (data) {
    venues = data['response']['groups'][0]['items'];
    for (var i = 0; i < venues.length; i++) {
        var fsRes = {
            'Id': venues[i]['venue']['id'],
            'Name': venues[i]['venue']['name'],
            'Latitude': venues[i]['venue']['location']['lat'],
            'Longitude': venues[i]['venue']['location']['lng'],
            'Type': type,
            'Vicinity': venues[i]['venue']['location']['address'],
            'Reference': "Foursquare"
        };
        fsObj.push(fsRes);
    }
    printMap(fsObj);
});

Como puede comprender: obtengo valores de latitud, longitud y distancia del mapa. También tratando de imprimir el resultado final.

Cuando uso la misma URL en el navegador, obtiene los resultados, pero lamentablemente no en este código. Me hace pensar que puede ser que la solicitud json no sea buena porque cuando trato de poner un punto de interrupción en la línea printMap; ni siquiera se detiene. ¿Estoy haciendo algo mal?

Cualquier ayuda será muy apreciada. Muchísimas gracias.

NUEVO ENFOQUE PERO TODAVÍA NO HAY OPORTUNIDADES:

var getFoursquare = function (p, g, q) {
    var lat = p.lat();
    var lng = p.lng();
    var url = 'https://api.foursquare.com/v2/venues/search?ll=' + lat + ',' + lng + '&query=' + q + '&radius=' + g + '&intent=browse&client_id=XXXXXXXXXXXXXXXX&client_secret=XXXXXXXXXXXXXXXXXXXXXXXXXX&v=20120305';
    $.getJSON(url, function (data) {
        $.each(data.response.venues, function (i, venues) {
            fsRes = {
                'Id': venues.id,
                'Name': venues.name,
                'Latitude': venues.location.lat,
                'Longitude': venues.location.lng,
                'Type': q,
                'Vicinity': venues.location.address,
                'Reference': "Foursquare"
            };
            fsObj.push(fsRes);
        });
        printMap(fsObj);
    }).error(function (event, jqXHR, ajaxSettings, thrownError) { alert(event); alert(jqXHR); alert(thrownError); });
}

preguntado el 04 de marzo de 12 a las 11:03

¿podría tal vez proporcionar más detalles? ¿Cómo se ve la respuesta y hay errores en la consola? -

Cuando uso la misma URL en el navegador, obtiene los resultados, pero lamentablemente no en este código. Me hace pensar que puede ser que la solicitud json no sea buena porque cuando trato de poner un punto de interrupción en la línea printMap; ni siquiera se detiene. ¿Estoy haciendo algo mal? -

La cosa es que esta es una llamada entre dominios y lo más probable es que esté diseñada para usarse desde un servidor proxy. tal vez hacer un console.log(data) usando el navegador Chrome y vea la consola para ver qué sucede con la solicitud. Sin embargo, sospecho que se está bloqueando debido al SOP. en.wikipedia.org/wiki/Same_origin_policy Hay muchas respuestas en SO hablando de SOP y llamadas de javascript. -

sí, supongo que tiene razón, pero no quiero usar una solución flash de terceros para propósitos de proxy porque planeo implementar esto también en una solución móvil. :( Es muy triste -

1 Respuestas

venues = data['response']['groups'][0]['items'];

No hay un campo de 'grupos' en el objeto de respuesta. Usted quiere

venues = data['response']['venues'];

Probablemente escribió este código antes de comenzar a especificar una ID de versión. Los grupos se eliminaron en junio de 2011, por lo que todas las llamadas con una ID de versión reciente ya no los devuelven.

respondido 05 mar '12, 15:03

Gracias por su respuesta, pero también lo he intentado con diferentes códigos, pero aún no hay posibilidad :( Voy a agregar mi otro enfoque a la pregunta. - Görkem Öğüt

¿Puede agregar una verificación para ver si está recuperando un objeto json válido antes de intentar analizarlo? - akdotcom

Lo siento por esta respuesta tardía. puse una marca y da el código de error 405: Método no permitido - Görkem Öğüt

esa sería la razón por la que no puede analizar el JSON, está recibiendo un error del servidor, me aseguraría de que su solicitud esté correctamente construida antes de intentar analizar la respuesta en su código. Simplemente pegue la URL de la solicitud en su navegador y asegúrese de recuperar un buen JSON. herramientas como chrome.google.com/webstore/detail/… lo ayudará a escanear el objeto JSON más fácilmente. - akdotcom

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.