Le "
Map tiles", che si usano sul web (come Google Maps), sono formate, per ciascun livello di zoom, da molteplici tessere (
tiles) che insieme offrono la rappresentazione corrente della mappa.
Il seguente semplice codice consente di vedere ogni singola tessera utilizzata da Google Maps usata nel livello di zoom prescelto.
E' necessario attivare il Componente grafico che rende disponibile la Classe "
WebView", come ad esempio gb.qt5.webkit. Quindi
non gb.map.
(La tessera di partenza mostra la foce del fiume Tevere ad un livello di zoom = 12).
Per vedere le tessere contigue a quella corrente visibile (quindi per spostarsi sul territorio), è necessario modificare i valori dei parametri x e y delle
tiles, variandoli direttamente dagli
SpinBox laterali, oppure cliccando sulle parti visibili di colore arancione del
Panel, come segue: se si clicca sulla parte sinistra, sarà mostrata la tessera contigua a sinistra della tessera corrente; se si clicca sulla parte superiore, sarà mostrata la tessera contigua al di sopra della tessera corrente; e così via per le restanti due parti del
Panel arancione.
Private WebView1 As WebView
Private Panel1 As Panel
Private SpinBox1 As SpinBox
Private SpinBox2 As SpinBox
Private SpinBox3 As SpinBox
Private pn2 As Panel
Private eti As Label
Private zm As Byte
Public Sub Form_Open()
With Me
.Center
.W = 580
.H = 500
.X = (Screen.AvailableWidth / 2) - (Me.W / 2)
.Y = Screen.AvailableHeight * 0.1
End With
With Panel1 = New Panel(Me) As "Panel1"
.X = 100
.Y = 50
.W = 350
.H = 350
.Background = Color.Orange
End With
With eti = New Label(Me)
.X = Panel1.X
.Y = Panel1.Y + Panel1.H
.W = Panel1.W
.H = 20
.Alignment = Align.Center
End With
With SpinBox1 = New SpinBox(Me) As "SpinBox1"
.X = Me.W * 0.82
.Y = Me.H * 0.5
.W = 80
.H = 35
.MaxValue = 10000000
End With
With SpinBox2 = New SpinBox(Me) As "SpinBox2"
.X = Me.W * 0.82
.Y = Me.H * 0.6
.W = 80
.H = 35
.MaxValue = 10000000
End With
With SpinBox3 = New SpinBox(Me) As "SpinBox3"
.X = Me.W * 0.82
.Y = Me.H * 0.7
.W = 80
.H = 35
.Value = 12
.MaxValue = 24
.MinValue = 1
End With
With SpinBox1
.MinValue = 1
.Value = 2187
End With
With SpinBox2
.MinValue = 1
.Value = 1524
End With
zm = SpinBox3.Value
End
Public Sub SpinBox1_Change()
Ricarica()
End
Public Sub SpinBox2_Change()
Ricarica()
End
Public Sub SpinBox3_Change()
If SpinBox3.Value > zm Then
SpinBox1.Value *= 2
SpinBox2.Value *= 2
Endif
If SpinBox3.Value < zm Then
SpinBox1.Value \= 2
SpinBox2.Value \= 2
Endif
zm = SpinBox3.Value
eti.Text = "Se l'immagine non è visibile, cliccare sul riquadro bianco."
Ricarica()
End
Public Sub Panel1_MouseUp()
If Mouse.X < WebView1.X Then SpinBox1.Value -= 1
If Mouse.X > (WebView1.X + WebView1.W) Then SpinBox1.Value += 1
If Mouse.Y < WebView1.Y Then SpinBox2.Value -= 1
If Mouse.Y > (WebView1.Y + WebView1.H) Then SpinBox2.Value += 1
Object.Lock(pn2)
eti.Text = Null
End
Public Sub Panel2_MouseUp()
Ricarica()
Object.Lock(pn2)
eti.Text = Null
End
Private Procedure Ricarica()
If Object.IsValid(WebView1) Then WebView1.Delete
With WebView1 = New WebView(Panel1) As "WebView1"
.X = 50
.Y = 50
.W = 256
.H = 256
.Url = "https://mt1.google.com/vt/lyrs=s&x=" & CStr(SpinBox1.Value) & "&y=" & CStr(SpinBox2.Value) & "&z=" & CStr(SpinBox3.Value)
End With
With pn2 = New Panel(Panel1) As "Panel2"
.X = WebView1.X
.Y = WebView1.Y
.W = WebView1.W
.H = WebView1.H
.Background = Color.Transparent
End With
End