Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Invoke Google Maps API V3 Javascript API from Windows Forms app?

Google has this fine new Google Maps API v3 which is a "Javascript API".

Is there any possibility to invoke this API from a Windows Forms application written in Visual C# .net 3.5?

EDIT:
The goal is to convert addresses to lat/long format using the Google Maps Geocoder.

EDIT 2:
I'd like to use v3 of the API as it doesn't require an API key anymore. API keys should be bound to a webserver which can't be the case for a Windows Forms app.

like image 783
Marc Avatar asked Jul 22 '26 19:07

Marc


1 Answers

Edit: Looks like the api key is no longer required.

You can use the REST APIs and parse the response (XML/JSON/CSV).

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

Would output:

200,6,42.730070,-73.690570

Which is:

  • 200 - G_GEO_SUCCESS
  • 6 - Street level accuracy
  • 42.730070 - Latitude
  • -73.690570 - Longitude

If you are not familiar with the System.Net APIs, they would go something like this:

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
}

Obviously there's no error handling, it doesn't support multiple return values and I haven't actually implemented MapGeolocationResult, but it should give you a start.

like image 144
Richard Szalay Avatar answered Jul 24 '26 07:07

Richard Szalay



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!