Eseguire un file audio o Midi quando si clicca sulla MapView
Da Gambas-it.org - Wikipedia.
Cliccando sulla MapView è possibile eseguire un file audio o un file Midi.
È necessario attivare anche il Componente gb.media.
Mostriamo un esempio pratico, nel quale per avviare e successivamente per arrestare l'esecuzione del file audio o MIDI, si dovrà cliccare sulla MapView con il tasto destro del mouse:
Private MapView1 As MapView Private mpt As New MapPoint(41.89018, 12.49230) Private mp As MediaPlayer Public Sub Form_Open() 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 = mpt End With ' Crea un Oggetto "MediaPlayer" per eseguire l'audio: With mp = New MediaPlayer .URL = Media.URL("/percorso/del/file/audio o Midi") ' Imposta il Controllo ove cliccare per far eseguire l'audio: .SetWindow(MapView1) End With End Public Sub MapView1_MouseUp() ' Se si clicca con il tasto destro del mouse sulla mappa, si avvia l'esecuzione o l'arresto dell'audio: If Not Mouse.Right Then Return If mp.State == Media.Playing Then mp.Stop mp.Close ' Determina la pulitura della "MapView" e pertanto la cessazione dell'esecuzione del file audio o Midi: MapView1.Refresh Else Dim pt As New Point(Mouse.X, Mouse.Y) mpt = MapView1.Map.PixelToMapPointRel(pt) ' Imposta il Controllo "MediaPlayer", e la posizione sulla "MapView" ove si eseguirà l'audio: mp.SetWindow(MapView1, MapView1.Map.MapPointToPixelRel(mpt).X, MapView1.Map.MapPointToPixelRel(mpt).Y) ' Esegue il file audio o Midi: mp.Play() Endif End
In quest'altro codice si eseguirà il file audio o il file Midi, soltanto se si cliccherà con il puntatore del mouse all'interno del cerchio disegnato sulla mappa:
Private MapView1 As MapView Private Const RADIUS As Float = 100.0 Private mpt As New MapPoint(41.89018, 12.49230) Private mp As MediaPlayer Private rc As Rect Public Sub _new() 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 = mpt ' Disegna infine il cerchio: .Map.AddShape("colosseo").AddCircle("cerchio", mpt, RADIUS, Color.Red, 1, Line.Solid, Color.Transparent) End With ' Crea un Oggetto "MediaPlayer" per eseguire l'audio: With mp = New MediaPlayer .URL = Media.URL("/percorso/del/file/audio o Midi") ' Imposta il Controllo ove cliccare per far eseguire l'audio: .SetWindow(MapView1) End With End Public Sub Form_Show() ' Imposta il quadrato entro il quale, se si clicca, si eseguirà l'audio: rc = Rect(mapView1.Map.MapPointToPixelRel(mpt).X, MapView1.Map.MapPointToPixelRel(mpt).Y, RADIUS / 2, RADIUS / 2) End Public Sub MapView1_MouseUp() ' Se si clicca con il tasto destro del mouse sulla mappa, si passa all'istruzione successiva: If Not Mouse.Right Then Return ' Se si clicca con il tasto destro del mouse all'interno del cerchio, disegnato sulla mappa, si avvia l'esecuzione o l'arresto dell'audio: If Not rc.Contains(Mouse.X + RADIUS / 4, Mouse.Y + RADIUS / 4) Then Return If mp.State == Media.Playing Then mp.Stop mp.Close ' Determina la pulitura della "MapView" e pertanto la cessazione dell'esecuzione del file audio o Midi: MapView1.Refresh Else Dim pt As New Point(Mouse.X, Mouse.Y) mpt = MapView1.Map.PixelToMapPointRel(pt) ' Imposta il Controllo "MediaPlayer", e la posizione sulla "MapView" ove si eseguirà l'audio: mp.SetWindow(MapView1, MapView1.Map.MapPointToPixelRel(mpt).X, MapView1.Map.MapPointToPixelRel(mpt).Y) ' Esegue il file audio o Midi: mp.Play() Endif End