Differenze tra le versioni di "Scalare la dimensione della mappa in una Mapview"
(10 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 11: | Riga 11: | ||
<BR>Tale Proprietà mostra le ''tessere'' della mappa corrispondenti ad un livello di zoom, ossia create con quello specifico livello di zoom di immagine rappresentata. | <BR>Tale Proprietà mostra le ''tessere'' della mappa corrispondenti ad un livello di zoom, ossia create con quello specifico livello di zoom di immagine rappresentata. | ||
− | Stante impostato un livello di zoom, è possibile agire sull'immagine della mappa mostrata modificandone la dimensione, ingrandendo i rimpicciolendo l'immagine dell'intera mappa (come se si applicasse un ulteriore zoom al livello di zoom al quale la mappa è mostrata). | + | Stante impostato un livello di zoom, è possibile agire sull'immagine della mappa mostrata modificandone la dimensione, ingrandendo i rimpicciolendo l'immagine dell'intera mappa (come se si applicasse un ulteriore zoom al livello di zoom corrente, al quale la mappa è mostrata). |
<BR>Ovviamente la qualità - soprattutto ingrandendo l'immagine - tenderà a perdere definizione. | <BR>Ovviamente la qualità - soprattutto ingrandendo l'immagine - tenderà a perdere definizione. | ||
Riga 17: | Riga 17: | ||
Mostriamo un esempio pratico, nel quale cliccando con il tasto destro del mouse si avrà un aumento della dimensione dell'immagine della mappa, cliccando con il tasto centrale, si avrà invece una diminuizione di quella dimensione. Se si mantiene premuto su uno dei due tasti citati, si otterrà un aumento o una diminuizione graduale, ma continua, dell'immagine. | Mostriamo un esempio pratico, nel quale cliccando con il tasto destro del mouse si avrà un aumento della dimensione dell'immagine della mappa, cliccando con il tasto centrale, si avrà invece una diminuizione di quella dimensione. Se si mantiene premuto su uno dei due tasti citati, si otterrà un aumento o una diminuizione graduale, ma continua, dell'immagine. | ||
+ | <BR>Il codice è impostato in modo tale che il rapporto scalare non sia inferiore a 0.70 rispetto alle dimensioni normali dello zoom corrente. Va rilevato che una riduzione del rapporto scalare comporta in alcuni livelli di zoom una riduzione della mappa visibile, così da renderla inferiore alla ''DrawingArea''. | ||
Private MapView1 As MapView | Private MapView1 As MapView | ||
Private DrawingArea1 As DrawingArea | Private DrawingArea1 As DrawingArea | ||
Private s As Single = 1.0 | Private s As Single = 1.0 | ||
+ | Private z As Byte | ||
Public bo As Boolean | Public bo As Boolean | ||
Riga 36: | Riga 38: | ||
.Map.Center = mp | .Map.Center = mp | ||
End With | End With | ||
+ | |||
+ | z = 15 | ||
'''End''' | '''End''' | ||
Riga 43: | Riga 47: | ||
Dim pn As Panel | Dim pn As Panel | ||
+ | Me.Title = "Rapporto scalare: 1.00" | ||
pn = MapView1.Children[0] | pn = MapView1.Children[0] | ||
DrawingArea1 = pn.Children[0] | DrawingArea1 = pn.Children[0] | ||
Riga 71: | Riga 76: | ||
bo = False | bo = False | ||
Repeat | Repeat | ||
− | If Mouse.Middle Then s -= 0.01 | + | If Mouse.Middle Then |
+ | s -= 0.01 | ||
+ | <FONT Color=gray>' ''Impedisce che si scenda ad un rapporto scalare inferiore a 0,70:''</font> | ||
+ | If s < 0.7 Then s = 0.7 | ||
+ | Endif | ||
If Mouse.Right Then s += 0.01 | If Mouse.Right Then s += 0.01 | ||
MapView1.Refresh | MapView1.Refresh | ||
Wait 0.01 | Wait 0.01 | ||
+ | Me.Title = Format(s, "Rapporto scalare: 0.00") | ||
Until bo == True | Until bo == True | ||
Riga 82: | Riga 92: | ||
bo = True | bo = True | ||
+ | |||
+ | <FONT Color=gray>' ''Se si cambia zoom della mappa, viene annullato l'effetto del Metodo "Scale()", riportando la visualizzazione alla normale dimensione del nuovo zoom corrente:''</font> | ||
+ | If z <> MapView1.Map.Zoom Then | ||
+ | Me.Title = "Rapporto scalare: 1.00" | ||
+ | s = 1.0 | ||
+ | z = MapView1.Map.Zoom | ||
+ | MapView1.Refresh | ||
+ | Endif | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | '''Public''' Sub MapView1_MouseWheel() | ||
+ | |||
+ | <FONT Color=gray>' ''Se si cambia zoom della mappa, viene annullato l'effetto del Metodo "Scale()", riportando la visualizzazione alla normale dimensione del nuovo zoom corrente:''</font> | ||
+ | Me.Title = "Rapporto scalare: 1.00" | ||
+ | s = 1.0 | ||
+ | z = MapView1.Map.Zoom | ||
+ | MapView1.Refresh | ||
'''End''' | '''End''' | ||
− | |||
− | |||
− | |||
− | |||
− |
Versione delle 17:13, 31 gen 2022
Premessa
E' opportuno ricordare che il Controllo MapView è formato da un Oggetto "Figlio" Panel, il quale è a sua volta ha un Oggetto "Figlio" che è una DrawingArea:
MapView ⬇ genitore di un Panel ⬇ genitore di una DrawingArea
Ingrandire o rimpicciolire l'immagine di una mappa mostrata in una MapView
Per ottenere diverse dimensioni visuali della mappa, si utilizza, come è noto, la Proprietà ".Zoom" della Classe Map del Componente gb.map.
Tale Proprietà mostra le tessere della mappa corrispondenti ad un livello di zoom, ossia create con quello specifico livello di zoom di immagine rappresentata.
Stante impostato un livello di zoom, è possibile agire sull'immagine della mappa mostrata modificandone la dimensione, ingrandendo i rimpicciolendo l'immagine dell'intera mappa (come se si applicasse un ulteriore zoom al livello di zoom corrente, al quale la mappa è mostrata).
Ovviamente la qualità - soprattutto ingrandendo l'immagine - tenderà a perdere definizione.
Per procedere a tale variazione della dimensione dell'immagine della mappa mostrata, si utilizzerà il Metodo ".Scale()" della CLasse Paint, da applicarsi alla DrawingArea, "Figlia" del Controllo Panel a sua volta "Figlio" della MapView.
Mostriamo un esempio pratico, nel quale cliccando con il tasto destro del mouse si avrà un aumento della dimensione dell'immagine della mappa, cliccando con il tasto centrale, si avrà invece una diminuizione di quella dimensione. Se si mantiene premuto su uno dei due tasti citati, si otterrà un aumento o una diminuizione graduale, ma continua, dell'immagine.
Il codice è impostato in modo tale che il rapporto scalare non sia inferiore a 0.70 rispetto alle dimensioni normali dello zoom corrente. Va rilevato che una riduzione del rapporto scalare comporta in alcuni livelli di zoom una riduzione della mappa visibile, così da renderla inferiore alla DrawingArea.
Private MapView1 As MapView Private DrawingArea1 As DrawingArea Private s As Single = 1.0 Private z As Byte Public bo As Boolean Public Sub _new() Dim mp As New MapPoint(41.89018, 12.49230) With Me .W = Screen.AvailableWidth .H = Screen.AvailableHeight .Arrangement = Arrange.Fill End With With MapView1 = New MapView(Me) As "MapView1" .Map.AddTile("GoogleMap", "https://mt0.google.com/vt/lyrs=s&hl=&x={x}&y={y}&z={z}") .Map.Zoom = 15 .Map.Center = mp End With z = 15 End Public Sub Form_Open() Dim pn As Panel Me.Title = "Rapporto scalare: 1.00" pn = MapView1.Children[0] DrawingArea1 = pn.Children[0] End Public Sub MapView1_Draw() With Paint .Begin(DrawingArea1) .Translate(Me.W / 2, Me.H / 2) .Scale(s, s) With MapView1.Map .Width = Paint.W .Height = Paint.H Paint.Translate(-(.Width / 2), -(.Height / 2)) .Draw() End With .End End With Me.Refresh() End Public Sub MapView1_MouseDown() bo = False Repeat If Mouse.Middle Then s -= 0.01 ' Impedisce che si scenda ad un rapporto scalare inferiore a 0,70: If s < 0.7 Then s = 0.7 Endif If Mouse.Right Then s += 0.01 MapView1.Refresh Wait 0.01 Me.Title = Format(s, "Rapporto scalare: 0.00") Until bo == True End Public Sub MapView1_MouseUp() bo = True ' Se si cambia zoom della mappa, viene annullato l'effetto del Metodo "Scale()", riportando la visualizzazione alla normale dimensione del nuovo zoom corrente: If z <> MapView1.Map.Zoom Then Me.Title = "Rapporto scalare: 1.00" s = 1.0 z = MapView1.Map.Zoom MapView1.Refresh Endif End Public Sub MapView1_MouseWheel() ' Se si cambia zoom della mappa, viene annullato l'effetto del Metodo "Scale()", riportando la visualizzazione alla normale dimensione del nuovo zoom corrente: Me.Title = "Rapporto scalare: 1.00" s = 1.0 z = MapView1.Map.Zoom MapView1.Refresh End