2010-04-19 110 views
0

地理編碼我已經找到了反向地理編碼驗證碼:反向與谷歌地圖API

var point = new GLatLng (lat[1],long[1]); 
var geocoder = new GClientGeocoder(); 
geocoder.getLocations (point, function(result) { alert (lat[1]+' '+long[1]+' '+result.address); }); 

但它會彈出警報,稱result.address是「未定義」。任何想法,可能是什麼問題?


編輯:得到它的工作,謝謝。

回答

3

可以包括「緯度」和「長」的定義是什麼?另外,'長'是一個保留的關鍵字,所以這可能是一個錯字/錯誤。

此外,至少以gmaps v2 json格式返回的結果具有更復雜的結構,'result.address'將不會有任何結果。當我測試了它,我需要訪問一個地址的東西,如:

result.Placemark[0].address

看到http://code.google.com/apis/maps/documentation/geocoding/index.html#GeocodingResponses

+0

感謝,result.Placemark [0]。地址的作品! – 2010-04-19 13:38:53

+0

還有一件事,如果我用一個變量替換'alert',比如x = result.Placemark [6] .address; ,那麼看起來這個x不能在函數外部訪問? – 2010-04-19 13:52:56

+0

是的,在回調中定義的任何東西都只能從該回調中訪問。如果可能的話,最好在回調中做任何你需要做的工作。一種更加複雜的方式可能是在函數之外定義一個對象或數組,並將結果添加到該函數中。 – 2010-04-19 14:04:36

1

從這我只能告訴result沒有被傳遞給函數或它不是一個對象。

您需要查看回調函數接收的參數。以下是文檔所述內容:

此響應將包含狀態碼,如果成功,則爲一個或多個地標對象。

如果你使用Firebug,你可以看看什麼東西被傳遞給回調是這樣的:

var point = new GLatLng (lat[1],long[1]); 
var geocoder = new GClientGeocoder(); 
geocoder.getLocations (point, function(result) { 
    window.console.log(arguments); 
    // Here you will see what arguments are passed and 
    // decide what to do about them 
});