Differenze tra le versioni di "Ottenere un'Image dalla mappa mostrata da una MapView"
Da Gambas-it.org - Wikipedia.
(10 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 1: | Riga 1: | ||
− | Per ottenere un oggetto <I>Image</i>, e da questo quindi un file immagine, della mappa corrente mostrata da una ''MapView'', è | + | Per ottenere un oggetto <I>Image</i>, e da questo quindi un file immagine, della mappa corrente mostrata da una ''MapView'', è possibile adottare due modalità. |
− | + | ===Uso del Metodo MapView.Map.Draw()=== | |
+ | Mostriamo un esempio pratico: | ||
+ | Private MapView1 As MapView | ||
+ | |||
+ | |||
'''Public''' Sub Form_Open() | '''Public''' Sub Form_Open() | ||
− | + | ||
Dim mp As New MapPoint | Dim mp As New MapPoint | ||
− | + | ||
− | + | <FONT Color=gray>' ''Specifica le coordinate geografiche del centro della mappa alla sua apertura iniziale:''</font> | |
− | |||
− | |||
− | <FONT Color=gray>' '' | ||
mp.Lat = 41.8902142 | mp.Lat = 41.8902142 | ||
mp.Lon = 12.4900422 | mp.Lon = 12.4900422 | ||
− | MapView1.Map.Center = mp | + | |
− | + | With Me | |
+ | .W = Screen.AvailableWidth | ||
+ | .H = Screen.AvailableHeight | ||
+ | .Arrangement = Arrange.Fill | ||
+ | End With | ||
+ | With MapView1 = New MapView(Me) As "MapView1" | ||
+ | <FONT Color=gray>' ''Imposta un "Raster Tiles Server" remoto:''</font> | ||
+ | .Map.AddTile("opentopo", "https://a.tile.opentopomap.org/{z}/{x}/{y}.png") | ||
+ | .Map.Zoom = 16 | ||
+ | <FONT Color=gray>' ''Imposta il centro della mappa visualizzata all'inizio:''</font> | ||
+ | .Map.Center = mp | ||
+ | End With | ||
+ | |||
'''End''' | '''End''' | ||
+ | '''Public''' Sub MapView1_MouseUp() | ||
− | ''' | + | <FONT Color=gray>' ''Se si clicca con il tasto destro del mouse sulla mappa, si avvia la creazione dell'immagine della "MapView":''</font> |
− | + | If Not Mouse.Right Then Return | |
+ | |||
Dim im As New Image(MapView1.W, MapView1.H, Color.White, Image.Standard) | Dim im As New Image(MapView1.W, MapView1.H, Color.White, Image.Standard) | ||
− | + | With Paint | |
− | With | + | .Begin(im) |
− | im | + | <FONT Color=#B22222>MapView1.Map.Draw()</font> |
+ | .End | ||
End With | End With | ||
Riga 29: | Riga 45: | ||
'''End''' | '''End''' | ||
+ | Se si desidera che il file immagine venga creato automaticamente ad ogni rinnovo del disegno della mappa, allora <SPAN Style="text-decoration:underline">si utilizzerà l'Evento "_Draw()"</span> della Classe ''MapView'' al posto dell'Evento "Button1_Click()". | ||
− | + | ===Uso del Metodo MapView.Map.Grab()=== | |
− | + | Di seguito mostriamo un semplice esempio: | |
− | = | + | Private MapView1 As MapView |
− | + | ||
− | < | + | |
+ | '''Public''' Sub Form_Open() | ||
+ | |||
+ | Dim mp As New MapPoint | ||
+ | |||
+ | <FONT Color=gray>' ''Specifica le coordinate geografiche del centro della mappa alla sua apertura iniziale:''</font> | ||
+ | mp.Lat = 41.8902142 | ||
+ | mp.Lon = 12.4900422 | ||
+ | |||
+ | With Me | ||
+ | .W = Screen.AvailableWidth | ||
+ | .H = Screen.AvailableHeight | ||
+ | .Arrangement = Arrange.Fill | ||
+ | End With | ||
+ | With MapView1 = New MapView(Me) As "MapView1" | ||
+ | <FONT Color=gray>' ''Imposta un "Raster Tiles Server" remoto:''</font> | ||
+ | .Map.AddTile("opentopo", "https://a.tile.opentopomap.org/{z}/{x}/{y}.png") | ||
+ | .Map.Zoom = 16 | ||
+ | <FONT Color=gray>' ''Imposta il centro della mappa visualizzata all'inizio:''</font> | ||
+ | .Map.Center = mp | ||
+ | End With | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | '''Public''' Sub MapView1_MouseUp() | ||
+ | |||
+ | <FONT Color=gray>' ''Se si clicca con il tasto destro del mouse sulla mappa, si avvia la creazione dell'immagine della "MapView":''</font> | ||
+ | If Not Mouse.Right Then Return | ||
+ | |||
+ | Dim im As New Image(MapView1.W, MapView1.H, Color.White, Image.Standard) | ||
+ | |||
+ | <FONT Color=gray>' ''Carica nell'oggetto "Image" i dati dell'immagine della mappa mostrata dalla "MapView":''</font> | ||
+ | With MapView1 | ||
+ | im = .Map.<FONT Color=#B22222>Grab</font>(.Map.GetTile("opentopo").MaxBounds(.Map.Center, .Map.Center), .W, .H, 0, .Map.Zoom) | ||
+ | End With | ||
+ | |||
+ | im.Save("/tmp/prova.png", 100) | ||
+ | |||
+ | '''End''' |
Versione attuale delle 17:19, 20 mag 2023
Per ottenere un oggetto Image, e da questo quindi un file immagine, della mappa corrente mostrata da una MapView, è possibile adottare due modalità.
Uso del Metodo MapView.Map.Draw()
Mostriamo un esempio pratico:
Private MapView1 As MapView Public Sub Form_Open() Dim mp As New MapPoint ' Specifica le coordinate geografiche del centro della mappa alla sua apertura iniziale: mp.Lat = 41.8902142 mp.Lon = 12.4900422 With Me .W = Screen.AvailableWidth .H = Screen.AvailableHeight .Arrangement = Arrange.Fill End With With MapView1 = New MapView(Me) As "MapView1" ' Imposta un "Raster Tiles Server" remoto: .Map.AddTile("opentopo", "https://a.tile.opentopomap.org/{z}/{x}/{y}.png") .Map.Zoom = 16 ' Imposta il centro della mappa visualizzata all'inizio: .Map.Center = mp End With End Public Sub MapView1_MouseUp() ' Se si clicca con il tasto destro del mouse sulla mappa, si avvia la creazione dell'immagine della "MapView": If Not Mouse.Right Then Return Dim im As New Image(MapView1.W, MapView1.H, Color.White, Image.Standard) With Paint .Begin(im) MapView1.Map.Draw() .End End With im.Save("/tmp/prova.png", 100) End
Se si desidera che il file immagine venga creato automaticamente ad ogni rinnovo del disegno della mappa, allora si utilizzerà l'Evento "_Draw()" della Classe MapView al posto dell'Evento "Button1_Click()".
Uso del Metodo MapView.Map.Grab()
Di seguito mostriamo un semplice esempio:
Private MapView1 As MapView Public Sub Form_Open() Dim mp As New MapPoint ' Specifica le coordinate geografiche del centro della mappa alla sua apertura iniziale: mp.Lat = 41.8902142 mp.Lon = 12.4900422 With Me .W = Screen.AvailableWidth .H = Screen.AvailableHeight .Arrangement = Arrange.Fill End With With MapView1 = New MapView(Me) As "MapView1" ' Imposta un "Raster Tiles Server" remoto: .Map.AddTile("opentopo", "https://a.tile.opentopomap.org/{z}/{x}/{y}.png") .Map.Zoom = 16 ' Imposta il centro della mappa visualizzata all'inizio: .Map.Center = mp End With End Public Sub MapView1_MouseUp() ' Se si clicca con il tasto destro del mouse sulla mappa, si avvia la creazione dell'immagine della "MapView": If Not Mouse.Right Then Return Dim im As New Image(MapView1.W, MapView1.H, Color.White, Image.Standard) ' Carica nell'oggetto "Image" i dati dell'immagine della mappa mostrata dalla "MapView": With MapView1 im = .Map.Grab(.Map.GetTile("opentopo").MaxBounds(.Map.Center, .Map.Center), .W, .H, 0, .Map.Zoom) End With im.Save("/tmp/prova.png", 100) End