The free map material from openstreetmap.org (OSM) is used for the two projects presented. In a displayed map - shown in a MapView - you can zoom the map section in 18 steps with the mouse wheel and move the displayed map area with a permanent click on the map.
There are three prerequisites for displaying a map:
The presented project implements a viewer for maps from OSM.
Figure 24.8.1.2.1: GeoMap1 - Hanseatic City Osterburg in Saxony/Anhalt
The source code for the project is given in full:
[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()
Notes:
Help is displayed when the programme is started:
The second project is an adaptation of the MapView programme example by Fabien Bodard - the developer of the Map component - from the Gambas sample collection.
In addition to displaying a map, you can switch on a magnifying glass function with the CTRL key:
Figure 24.8.1.3.1: GeoMap2 with magnifying glass
The archives for both projects are in the download directory.