2011-09-19 58 views
2

我試圖調用谷歌地圖地理編碼和我跟隨在他們的網頁上的例子,試圖將其應用到在這個例子中挖掘如何讀取返回的XML值映射

http://code.google.com/apis/maps/documentation/geocoding/index.html

, Geocoding API請求上面顯示的「1600 Amphitheatre Parkway,Mountain View,CA」的 相同查詢的xml響應: http://maps.googleapis.com/maps/api/geocode/xml?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true_or_false 此請求返回的XML如下所示。

我現在想運行一個URL像這樣在我的C#WinForms應用程序

string url = "http://maps.googleapis.com/maps/api/geocode/xml?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true_or_false"; 
    WebRequest req = HttpWebRequest.Create(url); 
    WebResponse res = req.GetResponse(); 
    StreamReader sr = new StreamReader(res.GetResponseStream()); 
    try 
    { 
     Match coord = Regex.Match(sr.ReadToEnd(), "<coordinates>.*</coordinates>"); 
     var b = coord.Value.Substring(13, coord.Length - 27); 
    } 
    finally 
    { 
     sr.Close(); 
    } 

但是它似乎沒有被返回任何東西,因此我的變種B線給出了一個索引出界失誤。任何人都可以指出我在正確的方向,至少讓示例工作,所以我可以將邏輯應用到我自己的應用程序?

感謝

回答

3

如果你訪問你的鏈接「http://maps.googleapis.com/maps/api/geocode/xml?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true_or_false」直接在瀏覽器中,你可以看到它返回。它給了我一個請求被拒絕的錯誤。

該問題是由sensor = true_or_false參數引起的。你必須選擇,如果你想它是真的還是假的。谷歌在他們的例子中這樣說,所以你必須明確自己決定。該設置指示您的應用程序是否使用位置傳感器。在你的情況下,我猜不是,所以把它設置爲false。

如果你改變你使用的鏈接到http://maps.googleapis.com/maps/api/geocode/xml?address=1600%20Amphitheatre%20Parkway,%20Mountain%20View,%20CA&sensor=false,我想你會得到你期待的結果。

+2

+1通過閱讀文檔求解 – Alain

+0

我想我第一次嘗試API時錯過了傳感器參數。 –

+0

常識 - 我明顯缺乏。對不起 - 你在代碼中沉浸在代碼中,作爲一個初學者,你忘記退後一步,看看在你面前的是什麼 - 謝謝 – simon