2012-09-05 142 views
0

我想將谷歌地圖結果映射到緩存。問題是數據變量在第一次搜索時總是未定義。它只會在第二次搜索後得到結果(使用相同的術語)。任何人都可以檢查是什麼問題?地圖谷歌地圖結果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); 

回答

0

谷歌地圖地理編碼請求是異步的,所以當您設置數據變量時結果不可用。它只會在地理編碼請求的回調內立即可用。看到,在回調中做一個console.log。

+0

是的,我正在嘗試一個回調函數,如:me.googleSearchCache [位置] =數據; me.processLocation(data); –

+0

是的,但是當數據尚不可用時,您正嘗試在方法調用後直接訪問該值。 – ScottE

+0

它像我說的那樣工作。我只是做了一個CallBack函數 –