Feedback

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

Veröffentlicht von am 5/17/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.
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 1/25/2013:
Hallo,
gefällt mir gut, kann man denn auch die HüNN ermitteln? Wenn ja, wie?
Danke.
Robert
Robert Milrath schrieb am 1/25/2013:
Wer lesen kann ist klar im Vorteil, die Doku der Api gibt die Antwort.
 

Logge dich ein, um hier zu kommentieren!