Как я могу связать ответ на обратный вызов геокодера Google Maps с моими пользовательскими данными?

#google-maps #google-maps-api-3

#google-карты #google-maps-api-3

Вопрос:

У меня есть этот код, использующий JavaScript API Google Maps для геокодирования ряда адресов:

 geocoder.geocode( { 'address': address }, function( results, status ) {
    if ( status == google.maps.GeocoderStatus.OK )
    {
        // Place marker on map
    }
  

Эти адреса «связаны» с некоторыми моими пользовательскими данными, и я хотел бы знать, «с чем» связан этот адрес. Я просто хочу знать, какому из моих объектов соответствует этот обратный вызов геокодирования.

Более уместным вопросом было бы: могу ли я отправить параметр «custom» или «data» в geocoder.geocode() results и вернуть его обратно мне через функцию обратного вызова (возможно, в объекте «results» в обратном вызове)?

Спасибо!

Ответ №1:

Вы выполняете несколько вызовов асинхронно или это, как кажется, один вызов на основе адреса?

В вашем коде у вас уже есть контекст (адрес, который вы «находите»), но вы не сохраняете его с помощью процедуры «разместить маркер на карте». Если вы не настроили это асинхронно, поток кода должен упростить сопоставление ваших данных с геокодированием и маркером.

Я что-то упускаю?

Комментарии:

1. Я выполняю несколько вызовов асинхронно, поэтому я не знаю, в каком порядке я буду получать эти обратные вызовы.

Ответ №2:

О, забудьте об этом.. Я просто делал здесь что-то глупое.. Это вся моя функция для добавления маркера, геокодирующего адрес в первую очередь:

 function addEventToMap( address, label )
{
    geocoder.geocode( { 'address': address }, function( results, status ) {
        if ( status == google.maps.GeocoderStatus.OK )
        {
            // Add marker with "label" on it
        }
    });
}
  

Я не получал параметр «label», и оказалось, что я передавал ему пустое значение.. виноват!