Ottenere un'Image dalla mappa mostrata da una MapView

Da Gambas-it.org - Wikipedia.

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:

Public Sub Form_Open()
 
 Dim mp As New MapPoint
 
' Imposta un "Raster Tiles Server" remoto:
 MapView1.Map.AddTile("opentopo", "https://a.tile.opentopomap.org/{z}/{x}/{y}.png")
 MapView1.Map.Zoom = 16
 
' Imposta il centro della mappa viasualizzata specificandone preliminarmente le coordinate geografiche:
 mp.Lat = 41.8902142
 mp.Lon = 12.4900422
 MapView1.Map.Center = mp
  
End
 
 
Public Sub Button1_Click()
 
 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:

Public Sub Form_Open()
 
 Dim mp As New MapPoint
 
' Imposta un "Raster Tiles Server" remoto:
 MapView1.Map.AddTile("opentopo", "https://a.tile.opentopomap.org/{z}/{x}/{y}.png")
 MapView1.Map.Zoom = 16
 
' Imposta il centro del cerchio specificandone preliminarmente le coordinate geografiche:
 mp.Lat = 41.8902142
 mp.Lon = 12.4900422
 MapView1.Map.Center = mp
  
End


Public Sub Button1_Click()
 
 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