Ottenere una Image dalla mappa mostrata da una MapView
Da Gambas-it.org - Wikipedia.
Versione del 15 nov 2024 alle 16:04 di Vuott (Discussione | contributi) (Creata pagina con "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à. <SUP>[...")
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