2009-07-29 2 views
3

Google a cette belle nouvelle Google Maps API v3 qui est une "API Javascript".Appel de l'API JavaScript Google Maps API V3 de l'application Windows Forms?

Est-il possible d'invoquer cette API à partir d'une application Windows Forms écrite en Visual C# .net 3.5?

EDIT:
L'objectif est de convertir les adresses au format lat/long en utilisant le géocodeur Google Maps. Je voudrais utiliser la version 3 de l'API car elle ne nécessite plus de clé API. Les clés API doivent être liées à un serveur Web, ce qui ne peut pas être le cas pour une application Windows Forms.

Répondre

8

Editer: On dirait que la clé API n'est plus nécessaire.

Vous pouvez utiliser REST APIs et analyser la réponse (XML/JSON/CSV).

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

génèrerait:

200,6,42.730070,-73.690570 

Ce qui est:

  • - G_GEO_SUCCESS
  • - niveau de la rue précision
  • 42.730070 - La latitude
  • -73,690570 - Longitude

Si vous n'êtes pas familier avec les API de System.Net, ils iraient quelque chose comme ceci:

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 
} 

De toute évidence il n'y a pas d'erreur Il ne gère pas les valeurs de retour multiples et je n'ai pas implémenté MapGeolocationResult, mais il devrait vous aider à démarrer.

+0

Grande réponse merci.Cependant, une partie du problème est que je voudrais utiliser V3 (pas v2) de l'API car il ne nécessite plus la clé API. L'application sera déployée sur plusieurs clients et la clé API devrait être liée à un serveur Web, mais ce ne sera pas le cas pour une application Windows Forms ... – Marc

+0

On dirait qu'ils ont supprimé cette exigence sur les services en tant que Je viens de supprimer l'argument clé et il a renvoyé les données correctes. –

+0

Oui, vous avez raison. Donc je vais l'utiliser ensuite. J'espère que ça reste comme ça ... – Marc

1

Vous pouvez héberger le contrôle WebBrowser sur votre formulaire et l'utiliser pour interagir avec l'API Google Maps.

Mais un peu plus d'informations sur ce que vous essayez vraiment de faire serait bien.

+0

Vous avez raison, j'ai modifié la question. J'ai également pensé à utiliser le contrôle WebBrowser. Mais je ne vois pas comment je serais capable d'en extraire les valeurs autres que de sauvegarder la page web résultante et de l'analyser après ou plus ... – Marc

1

Voulez-vous écrire du code C# pour interagir avec l'API Google Map? Si c'est le cas, vous pouvez utiliser un contrôle tiers à cette fin: GDS Google Map WinForms Control. Vous pouvez faire à peu près tout ce que vous voulez faire sur Google Map dans l'environnement de bureau. Vous n'avez pas besoin de créer un service Web, un site Web, JavaScript ou HTML. Ce contrôle gère juste tous les détails.

Si vous souhaitez exécuter JavaScript vous-même, vous devez héberger un contrôle WebBrowser sur votre formulaire et gérer tous les appels d'API.

Questions connexes