2009-07-29 73 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调用。