Получить результаты от геокодера Google в массив? - PullRequest
2 голосов
/ 14 августа 2011

У меня есть следующий код:

var data = geocoder.geocode({'address': 'new york'}, function (results, status)
{
    if(status == google.maps.GeocoderStatus.OK)
    {
        response($.map(results, function(item) 
        {
            return
            {
                value: item.formatted_address
            }
        }));
    }
});

Мне нужно, чтобы вывод данных выглядел так:

var data = [
    {value: 'some1'},
    {value: 'some2'},
    {value: 'some3'}
];

Я действительно понятия не имею, чтоЯ делаю, чтобы получить его в этом состоянии, и я не уверен, что именно возвращается первоначальный запрос геокодера.Информация на сайте Google Code была довольно ограничена, когда речь шла об объяснении вышеуказанной функции.

Есть идеи, как мне это сделать?Спасибо.

Ответы [ 2 ]

2 голосов
/ 15 августа 2011

Geocoder.geocode() не возвращает никаких значений, поэтому вы НЕ МОЖЕТЕ сделать:

var data = geocoder.geocode({'address': 'new york'}, function (results, status) {

Более того, обратный вызов function (results, status) {...}, указанный вами в приведенном выше вызове, вызывается асинхронно геокодером, когда он завершилгеокодирования.Итак, вам нужно использовать результаты в самом обратном вызове, например, заполнение некоторого текстового поля и т. Д. Вот шаблон, использующий чистый Javascript, вы можете соответствующим образом адаптировать его к вашей среде JS:

geocoder.geocode({'address': 'new york'}, 
    function (results, status) {     
        if(status == google.maps.GeocoderStatus.OK) {
            for (var i = 0; i < results.length; ++i) {         
                alert(i + ": " + results[i].formatted_address);
            }             
        }         
    }
);     
0 голосов
/ 14 августа 2011

.map возвращает объект jQuery.Чтобы получить обычный массив, используйте get

var data = $.map(results, function(item) {
    return { value: item.formatted_address };
    }).get();
...