2009-07-29 106 views
3

谷歌有這個新的Google Maps API v3這是一個「JavaScript API」。從Windows Forms應用程序調用Google Maps API V3 JavaScript API?

是否有可能從用Visual C#.NET 3.5的Windows窗體應用程序調用該API?

編輯:
目標是使用Google地圖地理編碼器將地址轉換爲緯度/經度格式。

編輯2:
我想使用API​​的v3,因爲它不再需要API密鑰。 API密鑰應綁定到Web服務器,而Windows服務器則不適用。

回答

8

編輯:看起來不再需要API密鑰。

您可以使用REST APIs和解析響應(XML/JSON/CSV)。

http://maps.google.com/maps/geo?q=State+St,+Troy,+NY&output=csv&oe=utf8&sensor=false 

將輸出:

200,6,42.730070,-73.690570 

那就是:

  • - G_GEO_SUCCESS
  • - 街道級精確度
  • 42.730070 - 緯度
  • -73.690570 - 經度

如果你不熟悉的System.Net的API,他們會去是這樣的:

const string GeoCodeUrlFormat = "http://maps.google.com/maps/geo?q={0}&output=csv&oe=utf8&sensor=false"; 

string location = "State St, Troy, NY"; 
string url = String.Format(GeoCodeUrlFormat, HttpUtility.UrlEncode(location)); 

HttpRequest request = (HttpWebRequest)HttpWebRequest.Create(url); 
HttpResponse response = (HttpResponse)request.GetResponse(); // Can throw an exception 
Stream responseStream = response.GetResponseStream(); 

using (StreamReader reader = new StreamReader(responseStream) 
{ 
    string firstLine = reader.ReadLine(); 

    string[] lineParts = firstLine.Split(); 

    GeolocationResult result = GoogleMapper.MapGeolocationResult(lineParts); 

    // TADA 
} 

顯然沒有錯誤處理,它不支持多個返回值,我沒有實際實現MapGeolocationResult,但它應該給你一個開始。

+0

非常感謝。然而問題的一部分是我想使用V3的V3(不是V2),因爲它不再需要API密鑰。 該應用將推出到各種客戶和API密鑰應鏈接到網絡服務器,但這不會是一個Windows窗體應用程序的情況下... – Marc 2009-07-29 15:16:41

1

你可以承載您窗體上的WebBrowser控件並用它來與谷歌地圖API進行互動。

但是關於你真正要做的將是很好的一些更多的信息。

+0

你說得對,我已經編輯了這個問題。我也想過使用WebBrowser控件。但我不明白我將如何能夠從中檢索值,除了保存生成的網頁和解析它之後...或許... – Marc 2009-07-29 14:38:05

1

你想編寫C#代碼來與Google Map API交互嗎?如果是這樣,您可以使用第三方控制來實現此目的:GDS Google Map WinForms Control。在桌面環境中,您幾乎可以做任何您想在Google地圖上執行的操作。您不需要構建任何Web服務,網站,JavaScript或HTML。該控件只處理所有細節。

如果你想自己做的JavaScript,你需要承載您窗體上的WebBrowser控件和處理所有的API調用。