2012-09-05 5 views
0

Je suis en train de cartographier les résultats google maps à mettre en cache. Le problème est sur la variable de données est toujours indéfini sur une première recherche. Il n'aura de résultats qu'après la deuxième recherche (avec le même terme). Tout le monde peut vérifier quel est le problème?Carte google maps résultats jquery

if (!(me.data = me.googleSearchCache[ location ])) { 
       var geocoderRequest = { 
        address: location 
       } 
       geocoder.geocode(geocoderRequest, function(results, status) { 
        if (status == google.maps.GeocoderStatus.OK) { 
         me.googleSearchCache[ location ] = $.map(results, function(loc) { 
          return { 
           value : loc.formatted_address, 
           //bounds : loc.geometry.bounds, 
           lat : loc.geometry.location.lat(), 
           lng : loc.geometry.location.lng() 
          }; 
         }); 
        } 
       }); 
      } 
      data = me.googleSearchCache[ location ]; 
      debug(data); 

Répondre

0

La demande de géocodage de Google Maps est asynchrone, de sorte que les résultats ne sont pas disponibles lorsque vous configurez votre variable de données. Il ne sera disponible que dans le rappel de la requête de géocodage. Pour voir, faire un console.log à l'intérieur du rappel.

+0

Oui, j'essaie une fonction de rappel comme: me.googleSearchCache [location] = data; me.processLocation (données); –

+0

Oui, mais vous essayez d'accéder à cette valeur directement après l'appel de la méthode lorsque les données ne sont pas encore disponibles. – ScottE

+0

ça marche comme je l'ai dit. Je viens de faire une fonction CallBack –