![]() |
Tipp 0210
|
Orte mit der Google Maps API anzeigen
|
 |
|
Autor/Einsender: Datum: |
|
Michael Werner 20.01.2012 |
|
Entwicklungsumgebung: |
|
VB.Net 2008 |
Framework: |
|
2.0 |
|
|
Mit der geographischen Breite (Latitude) und Länge (Longitude) kann ein Ort auf der Erde genau lokalisiert werden.
Die Erde wird dabei in 180 Breiten- und 360 Längengrade aufgeteilt.
Mit der Google Maps API kann der Längen- und Breitengrad zu einer belieben Ort abgefragt werden.
Übergeben werden kann ein Ortsname mit oder ohne Straßenangabe
beziehungsweise einem markantem Namen (z.B. Brandenburger Tor).
|
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
|
Zum Funktionieren des Tipp-Projektes müssen Sie also Ihren persönlichen Key
bei Google besorgen und im Projekt eingeben.
|
Für die Kartendarstellung wird eine HTML-Code erzeugt, indem mit JavaScript die Koordinaten und ein Zoomfaktor den Kartenabschnitt bestimmen.
Im WebBrowserControl wird dann die generierte HTML-Datei aufgerufen und die Map angezeigt.
Für Mehrfachabfragen hintereinander muss eine Pause von ca. 100ms zwischen den Abfragen eingehalten werden.
|
|
|
Private Sub btnGo_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnGo.Click
Dim myLocation As String = txtLocation.Text
Dim LatLongData As New LatLong
LatLongData = GeoData.GetCoordinates(myLocation, myKey)
lblLat.Text = LatLongData.Latitude
lblLng.Text = LatLongData.Longitude
If CheckBox1.Checked Then
Clipboard.SetText(lblLat.Text & ", " & lblLng.Text)
End If
WriteGeoHTMLFile("myGeoHTML.html")
End Sub
Private Sub WriteGeoHTMLFile(ByVal sFileHtml As String)
Dim stream As IO.StreamWriter
stream = New IO.StreamWriter(sFileHtml)
'Html-Struktur erzeugen
With stream
.WriteLine("<!DOCTYPE html PUBLIC '-//W3C//DTD"_
"XHTML 1.0 Strict//EN' ")
.WriteLine("_
"'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'> ")
.WriteLine("<html xmlns='http://www.w3.org/1999/xhtml' ")
.WriteLine("xmlns:v='urn:schemas-microsoft-com:vml'> ")
.WriteLine("<head> ")
.WriteLine("<meta http-equiv='content-type' content='text/html;"_
"charset=utf-8'/> ")
.WriteLine("<title>Zugriff auf Google Maps API</title> ")
.WriteLine("<script src='http://maps.google.com/maps?file="_
"api&v=2&key=ABQIAAAAwMzF90OPDYCo3ejYxew4zhQ4n4xc"_
"LoLVQXW0-1NaLBfn657FaBQ8WA-rssNtB7dwdTd80OlCLmZqsw' ")
.WriteLine("type='text/javascript'></script> ")
.WriteLine("<script type='text/javascript'> ")
.WriteLine("var map; ")
.WriteLine("var zoomFactor = " & nudZoomFactor.Value)
.WriteLine("var lat = " & lblLat.Text)
.WriteLine("var lng = " & lblLng.Text)
.WriteLine("function initialize() { ")
.WriteLine(" if (GBrowserIsCompatible()) { ")
.WriteLine(" "_
"map = new GMap2(document.getElementById('map_canvas')); ")
.WriteLine(" "_
"map.setCenter(new GLatLng(lat, lng), zoomFactor); ")
.WriteLine(" map.setUIToDefault(); ")
.WriteLine(" } ")
.WriteLine("} ")
.WriteLine("</script> ")
.WriteLine("</head> ")
.WriteLine("<body onload='initialize()' "_
"onunload='GUnload()'> ")
.WriteLine("<div id='map_canvas' style='width: 640px; height: "_
"480px; float:left; border: 1px solid black;'></div> ")
.WriteLine("</div> ")
.WriteLine("<br clear='all'/> ")
.WriteLine("<br/> ")
.WriteLine("</body> ")
.WriteLine("</html> ")
End With
stream.Close()
'Im Browser anzeigen
WebBrowser1.Navigate(Application.StartupPath & "/myGeoHTML.html")
End Sub
'Die Klasse GeoData
'ermittelt Latitude und Longitude zu einem Ortsnamen:
Imports System.Net
Imports System.Text
Imports System.IO
Public Class GeoData
''' <summary>
''' Koordinaten eines Ortes abrufen
''' </summary>
''' <param name="location">Ortsname eventuell mit Straße, "_
"oder PLZ</param>
''' <param name="googleKey">Ihr persönlicher Google-Key für "_
"die API</param>
''' <returns>Breiten- und Längengrad</returns>
''' <remarks></remarks>
Public Shared Function GetCoordinates(ByVal location As String, _
ByVal googleKey As String) As LatLong
Dim myLatLong As LatLong = New LatLong
If Not String.IsNullOrEmpty(googleKey) Then
Dim myReq As HttpWebRequest = CType(WebRequest.Create"_
"("http://maps.google.com/maps/geo?q=" + location.Trim "_
"+ "&output=csv&key=" + googleKey), HttpWebRequest)
Dim webResponse As HttpWebResponse
Try
webResponse = CType(myReq.GetResponse, HttpWebResponse)
Catch
Return myLatLong
End Try
If Not (webResponse Is Nothing) Then
If webResponse.StatusCode = HttpStatusCode.OK Then
Dim streamReader As StreamReader = New StreamReader"_
"(webResponse.GetResponseStream, Encoding.ASCII)
Dim responseString As String = streamReader.ReadToEnd
If Not String.IsNullOrEmpty(responseString) Then
Dim arrayResponse As String() = "_
"responseString.Split(","c)
If arrayResponse.Length = 4 Then
myLatLong.Latitude = arrayResponse(2)
myLatLong.Longitude = arrayResponse(3)
End If
End If
End If
End If
End If
Return myLatLong
End Function
End Class
Public Class LatLong
Private _latitude As String
Private _longitude As String
''' <summary>
''' Breitengrad
''' </summary>
''' <value></value>
''' <returns>String</returns>
''' <remarks></remarks>
Public Property Latitude() As String
Get
Return _latitude
End Get
Set(ByVal value As String)
_latitude = value
End Set
End Property
''' <summary>
''' Längengrad
''' </summary>
''' <value></value>
''' <returns>String</returns>
''' <remarks></remarks>
Public Property Longitude() As String
Get
Return _longitude
End Get
Set(ByVal value As String)
_longitude = value
End Set
End Property
End Class
| |
|
|
|
Windows-Version |
98/SE |
 |
|
ME |
 |
|
NT |
 |
|
2000 |
 |
|
XP |
 |
|
Vista |
 |
|
Win
7 |
 |
|
|
|
Download (19
kB)
|
Downloads bisher: [ 351 ]
|
|
|