Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1562 | Anzahl registrierter User: 1893 | Besucher online: 10
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Geografische Koordinaten mit der Google Maps API abfragen


Autor: Jan Welker
Sprache: C#
Bewertung:
8.36 (6 votes)
Anzahl der Aufrufe: 23202
  
Kick it on dotnet-kicks.de  

Beschreibung:

Mit der Google Maps API kann sehr einfach der Längen- und Breitengrad zu einer belieben Position abgefragt werden.
Dabei ist es egal, ob man nach „Deutschland“, „München“, „Berlin Alexanderplatz 1“ oder nach einer Postleitzahl sucht.

Für den Aufruf der Methode wird ein Google Maps API Key benötigt, dieser kann hier kostenlos beantragt werden: http://code.google.com/apis/maps/signup.html

Sollen mehrere Koordinaten abgefragt werden, ist darauf zu achten, dass eine Pause von ca. 100ms zwischen den Abfragen eingehalten wird, sonst erkennt Google einen DOS Angriff und sperrt die IP für einige Minuten.

Folgende Usings werden benötigt:

using System.Net;
using System.IO;
using System.Text;


Abgelegt unter: Google, API, Geodata, Geografische Koordinaten, Longitude, Latitude.



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
/// <summary>
/// Gets the geo data.
/// </summary>
/// <param name="location">The location.</param>
/// <param name="googleKey">The google key.</param>
/// <returns></returns>
public static LatLong GetGeoData(string location, string googleKey)
{
    LatLong myLatLong = new LatLong();

    if (!string.IsNullOrEmpty(googleKey))
    {
        HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create("http://maps.google.com/maps/geo?q=" + location.Trim() + "&output=csv&key=" + googleKey);
        HttpWebResponse webResponse;

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

        if (webResponse != null)
            if (webResponse.StatusCode == HttpStatusCode.OK)
            {
                StreamReader streamReader = new StreamReader(webResponse.GetResponseStream(), Encoding.ASCII);
                string responseString = streamReader.ReadToEnd();

                if (!string.IsNullOrEmpty(responseString))
                {
                    string[] arrayResponse = responseString.Split(',');
                    if (arrayResponse.Length == 4)
                    {
                        myLatLong.Latitude = arrayResponse[2];
                        myLatLong.Longitude = arrayResponse[3];
                    }
                }
            }
    }
    return myLatLong;
}


public class LatLong
{
    private string _latitude;
    private string _longitude;

    public string Latitude
    {
        get { return _latitude; }
        set { _latitude = value; }
    }

    public string Longitude
    {
        get { return _longitude; }
        set { _longitude = value; }
    }
}
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)

Timo Boehme schrieb am:  25.11.2008 11:28:28

Hi. Arbeite gerade an einer GPS Software für unseren FlighTimer. Dabei habe ich GoogleEarth integriert und fahre den Flug in Echtzeit mittels NMEA stream ab. Das mit den 100ms ist interessant. Ich hatte 500ms zur Sicherheit eingefügt gehabt. Gut zu wissen, dass es nur 100ms sein müssen ;-)
Gruss

Timo

www.goldengel.ch
SoftIl schrieb am:  12.12.2008 18:17:58

Hi Jan,
wie kann ich die ermittelten Werte in "normale" Geodaten also so, wie man sie für Googleearth z.Bsp. benötigt umwandeln?
Beispiel:
Werte, die die Methode zurückliefert:
37.4219720, -122.0841430
Werte wie sie für Googleearth benötigt werden:
37°25'23.12"N 122° 5'6.44"W

Vielen Dank für die Hilfe
Carsten
Jan Welker schrieb am:  13.12.2008 14:58:25

Hallo,
habs gerade veröffentlicht: http://dotnet-snippets.de/dns/geodaten-in-sexagesimal-format-umrechnen-SID1046.aspx

Jan
andyhirt schrieb am:  31.03.2009 23:19:15

Hallo.
Für ein Schulprojekt wäre diese API für mich sehr nützlich (allerdings Java). Habt ihr zufällig eine Ahnung ob sich für die Koordinaten auch die Höhenangaben abrufen lassen? Hab nur kurz mal reingeschaut und nichts gefunden.

Gruss und Danke

Andy


schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.