Ottenere una Image dalla mappa mostrata da una MapView
Vai alla navigazione
Vai alla ricerca
Per ottenere un oggetto Image, e da questo quindi un file immagine, della mappa corrente mostrata da una MapView, è possibile adottare due modalità. [nota 1]
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 "MapView1_MouseUp()".
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
Note
[1] Vedere anche: Ottenere un file png dalla mappa mostrata da una MapView