Как получить доступ к API-интерфейсу Foursquare Userless Venues API v2 через JSON? - PullRequest
0 голосов
/ 04 марта 2012

Я пытаюсь получить доступ к объектам на Foursquare, используя их формулу API без пользователя в моем приложении ASP MVC map, но мне не удается это сделать.

Мой код:

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);
});

Как вы понимаете: я получаю значения широты, долготы и расстояния с карты. Также пытаюсь распечатать конечный результат.

Когда я использую тот же URL в браузере, он получает результаты, но в этом коде, к сожалению, нет. Это заставляет меня думать, что, возможно, запрос json не очень хорош, потому что я пытаюсь поставить точку останова в строке printMap; это даже не останавливается. Я что-то не так делаю?

Любая помощь будет высоко оценена. Большое спасибо.

НОВЫЙ ПОДХОД, НО ЕЩЕ НЕ ШАНС:

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); });
}

1 Ответ

0 голосов
/ 05 марта 2012
venues = data['response']['groups'][0]['items'];

В объекте ответа нет поля 'groups'.Вы хотите

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

Вы, вероятно, написали этот код до того, как начали указывать идентификатор версии.Группы были удалены в июне 2011 года, поэтому все вызовы с идентификатором последней версии больше не возвращают их.

...