2017-08-05 98 views
-1

我有一個函數,從谷歌地理代碼獲取latLng從一個地址。函數不返回位置對象從谷歌地圖地理代碼

function geoCode(address){ 
    var geocoder = new google.maps.Geocoder; 
    geocoder.geocode({'address': address}, function(results, status) { 
     if (status === 'OK') { 
     var pos = { 
      lat:results[0].geometry.location.lat(), 
      lng:results[0].geometry.location.lng() 
     }; 
     return pos; 
     } else { 
     alert('Geocode was not successful for the following reason: ' + status); 
     } 
    }); 
} 

當我控制檯登錄這個功能我得到的位置「POS」對象,但是當我嘗試CONSOLE.LOG它例如在發生其他功能如下

function foo(){ 
    var pos = geoCode(place); 
    console.log(pos.lat); 
} 

我的一個得到如下警告: 類型錯誤:不確定是不是(評估「pos.lat」)的對象

似乎有點毛病POS對象的回報。

+0

地理編碼器是異步的,你不能從回調函數返回任何東西 – geocodezip

回答

0

和geocodezip一樣,你的geoCode函數是異步的。這意味着當您從foo函數中調用該函數時,foo會在從geoCode獲取數據之前完成,這會導致您的undefined錯誤。你可以做的是將你的geoCode函數包裝在承諾中,並用谷歌的數據解決承諾。

相關問題