Feedback

C# - Geo-Daten mit Google Maps API V3 anhand der Adresse abfragen

Veröffentlicht von am 17.05.2012
(0 Bewertungen)
Wie in einem vorherigen Artikel von Jan Welker beschrieben ist es recht einfach mit der Google Maps API Längen- und Breitengrad zu einer belieben Position bzw. Adresse abzufragen.

Siehe Artikel: http://dotnet-snippets.de/dns/geografische-koordinaten-mit-der-google-maps-api-abfragen-SID824.aspx

Dies ist die überarbeitete Fassung mit der Google Maps API V3, diese gibt entweder ein XML- oder ein JSON-Objekt zurück. In diesem Beispiel wird aus dem von Google Maps zurückgelieferten XML-Objekt direkt ein .NET-Objekt mit geografischer Längen- und Breitenangabe erstellt und zurückgegeben.

Die Google Maps API V3 benötigt übrigens keinen Key mehr. Abfragen sind - ohne Google Maps Premier-Account - auf 2500 Geolokalisierungsanforderungen pro Tag begrenzt.
Snippet in VB übersetzen
using System;
using System.Net;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace Geo
{
    public class GeoData
    {
        public decimal Latitude;
        public decimal Longitude;

        public GeoData()
        { 
        }

        /// <summary>
        /// Creates a GeoData object and retrieves the GeoData provided by an address from google maps api v3
        /// </summary>
        /// <param name="location">complete adress as would be typed in at google maps</param>
        /// <returns>GeoData object with latitude and longitude</returns>
        public static GeoData CreateGeoData(string location)
        {
            GeoData geodata = new GeoData();

            HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create("http://maps.googleapis.com/maps/api/geocode/xml?address=" + location.Trim() + "&sensor=false");
            HttpWebResponse webResponse;

            try
            {
                webResponse = myReq.GetResponse() as HttpWebResponse;
            }
            catch
            {
                return null;
            }

            if (webResponse != null)
            {
                if (webResponse.StatusCode == HttpStatusCode.OK)
                {

                    System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
                    doc.Load(webResponse.GetResponseStream());

                    if (doc != null)
                    {
                        System.Xml.XmlNode geometry = doc.SelectSingleNode("GeocodeResponse/result/geometry/location");
                        
                        if (geometry != null)
                        {
                            System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("en-US");
                            geodata.Latitude = Convert.ToDecimal(geometry.SelectSingleNode("lat").InnerText, ci);
                            geodata.Longitude = Convert.ToDecimal(geometry.SelectSingleNode("lng").InnerText, ci);
                        }
                    }
                }
            }
            return geodata;   
        }

    }
}

2 Kommentare zum Snippet

Robert Milrath schrieb am 25.01.2013:
Hallo,
gefällt mir gut, kann man denn auch die HüNN ermitteln? Wenn ja, wie?
Danke.
Robert
Robert Milrath schrieb am 25.01.2013:
Wer lesen kann ist klar im Vorteil, die Doku der Api gibt die Antwort.
 

Logge dich ein, um hier zu kommentieren!