Ottenere un file png dalla mappa mostrata da una MapView
Da Gambas-it.org - Wikipedia.
Versione del 25 set 2023 alle 03:17 di Vuott (Discussione | contributi)
Possiamo ottenere un file di formato PNG dalla mappa mostrata da una MapView, usando le risorse del Componente gb.media.
Mostriamo un esempio pratico:
Private MapView1 As MapView Private pl As MediaPipeline Public Sub Form_Open() Dim mp As New MapPoint(41.89030, 12.49237) 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 End Public Sub MapView1_MouseUp() ' Se si clicca sulla "MapView" con il tasto destro del mouse, si avvierà la procedura per ottenere il file PNG: If Not Mouse.Right Then Return Dim src, con, png, snk As MediaControl pl = New MediaPipeline src = New MediaControl(pl, "ximagesrc") src["xid"] = MapView1.Id ' Assegna il numero identificativo della "MapView", della quale si otterrà il file PNG con = New MediaControl(pl, "videoconvert") png = New MediaControl(pl, "pngenc") snk = New MediaControl(pl, "filesink") snk["location"] = "/tmp/immagine_mappa.png" src.LinkTo(con) con.LinkTo(png) png.LinkTo(snk) ' Crea il file PNG e poi chiude il flusso di dati: pl.Play() pl.Stop() End Public Sub Form_Close() If Exist("/tmp/immagine_mappa_1.png") Then Kill "/tmp/immagine_mappa_1.png" ' Se viene chiuso il "Form" direttamente cliccando sul suo tastino [X] in alto a destra, si perderanno i dati PNG nel file immagine appena creato. La seguente soluzione impedirà la perdita del file PNG, creandone un altro identico, ma con diverso nome. Copy "/tmp/immagine_mappa.png" To "/tmp/immagine_mappa_1.png" End