Für die zwei vorgestellten Projekte wird das freie Kartenmaterial von openstreetmap.org (OSM) eingesetzt. In einer angezeigten Karte – dargestellt in einer MapView – können Sie mit dem Mausrad den Kartenausschnitt in 18 Schritten zoomen und mit einem permanenten Klick auf die Karte den angezeigten Kartenbereich verschieben.
Für die Anzeige einer Karte sind drei Voraussetzungen zu erfüllen:
Das vorgestellte Projekt realisiert einen Betrachter für Karten von OSM.
Abbildung 24.8.1.2.1: GeoMap1 – Hanse-Stadt Osterburg in Sachsen/Anhalt
Der Quelltext für das Projekt wird vollständig angegeben:
[1] ' Gambas class file [2] [3] Public Sub Form_Open() [4] FMain.Center [5] FMain.Caption = "GeoMap - Daten von OpenStreetMap" [6] btnHelp.Value = True [7] ShowMap() [8] End ' Form_Open() [9] [10] Public Sub ShowMap() [11] Dim iZoom As Integer [12] Dim fLatitude, fLongitude As Float [13] Dim sCacheName, sTileName, sTilePattern As String [14] Dim cArguments As New Collection [15] [16] ' Initialisierung [17] iZoom = 13 [18] sTileName = "OpenStreetMap" [19] sTilePattern = "85.30.190.241/{z}/{x}/{y}.png" [20] cArguments = Null [21] sCacheName = Null [22] fLatitude = 52.7905 ' °Breite Osterburg [23] fLongitude = 11.7531 ' °Länge Osterburg [24] [25] MapView1.Map.AddTile(sTileName, sTilePattern, cArguments, sCacheName) [26] MapView1.Map[sTileName].Copyright = " © OpenStreetMap" [27] MapView1.Map[sTileName].Visible = True ' optional; Standard-Einstellung ist TRUE [28] MapView1.Map.AddShape("P1") [29] MapView1.Map!P1.AddPoint("Osterburg", MapPoint(fLatitude, fLongitude)) [30] MapView1.Map.Center = MapPoint(fLatitude, fLongitude) [31] ' MapView1.Map.Center = MapView1.Map!P1!Osterburg.Points ' Alternative [32] MapView1.Map.Zoom = iZoom [33] MapView1.AllowEffect = True [34] End ' ShowMap() [35] [36] Public Sub btnHelp_Click() [37] ShowHelp() [38] End ' btnHelp_Click() [39] [40] Public Sub ShowHelp() [41] Dim sMessage As String [42] [43] sMessage = "<hr><b>Hinweise zum Einsatz der Komponente Map</b><hr>" [44] sMessage &= "» Verschieben der Karte mit gedrückter linker Maustaste<br>" [45] sMessage &= "» Zoomen mit dem Maus-Rad<br>" [46] sMessage &= "» Zoomen mit dem Schieberegler<hr>" [47] sMessage &= "» Die Tastenkombination ALT+B beendet das Programm<hr>" [48] sMessage &= "▪ Entwickler der Komponente <i>gb.map</i> ist Fabien Bodard" [49] sMessage &= "<br>▪ EMail: gambix@users.sourceforge.net<hr>" [50] Message.Info(sMessage) [51] End ' ShowHelp() [52] [53] Public Sub btnClose_Click() [54] FMain.Close [55] End ' btnClose_Click()
Hinweise:
Beim Programm-Start wird eine Hilfe eingeblendet:
Abbildung 24.8.1.2.2: Programm-Hilfe
Das zweite Projekt ist eine Adaption des Programmbeispiels MapView von Fabien Bodard – dem Entwickler der Komponente Map – aus der Beispielsammlung von Gambas.
Zusätzlich zur Anzeige einer Karte können Sie mit der CTRL-Taste eine Lupen-Funktion zuschalten:
Abbildung 24.8.1.3.1: GeoMap2 mit Lupe
Die Archive für beide Projekte befinden sich im Download-Verzeichnis.