Mostrare un Balloon sulla MapView se il puntatore del mouse è dentro una determinata area della mappa

Da Gambas-it.org - Wikipedia.

Mostriamo di seguito un possibile codice, ampiamente commentato, per far apparire un Balloon sulla MapView se il puntatore del mouse è all'interno di una determinata area quadrata (ma potrebbe essere anche rettangolare) prestabilita della mappa.

Private mp1 As New MapPoint(41.891095, 12.491366) ' Le coordinate geografiche del vertice in alto a sinistra dell'area
Private Const LATO As Byte = 30                   ' La dimensione che assumerà ciascun lato dell'area
Private rct As Rect


Public Sub Form_Open()

 With MapView1.Map
   .AddTile("GoogleMap", "https://mt0.google.com/vt/lyrs=s&hl=&x={x}&y={y}&z={z}")
   .Zoom = 15
' Imposta il centro della mappa mostrata all'inizio:
   .Center = mp1
 End With 
 
End

' Fa sì che l'Oggetto "Rect" acquisisca dall'Oggetto "Map" le coordinate in pixel (.X e .Y) dalle coordinate geografiche fissate per il punto geografico che sarà interessato dal "Ballon".
' Se l'istruzione viene posta invece all'interno di un Evento del "Form", l'Oggetto "Rect" non acquisirà le predette coordinate.
Public Sub MapView1_Draw()

 With MapView1.Map
' Imposta l'area (in tal caso un quadrato immaginario), che determinerà l'apparizione del "Balloon", qualora il puntatore del mouse dovesse capitarvi all'interno:
   rct = Rect(.MapPointToPixelRel(mp1).X, .MapPointToPixelRel(mp1).Y, LATO + ((20 * .Zoom) / 15), LATO + ((20 * .Zoom) / 15))
 End With
 
End

Public Sub MapView1_MouseMove()

 Dim pt As New Point(Mouse.X, Mouse.Y)
 Dim mp2 As MapPoint = MapView1.Map.PixelToMapPointRel(pt)
' Per verificare se il puntatore del mouse è entrato nell'area prestabilita, bisogna tenere conto delle "coordinate geografiche" sulla mappa, e NON delle coordinate X e Y della "MapView":
 Dim x As Short = MapView1.Map.MapPointToPixelRel(mp2).X
 Dim y As Short = MapView1.Map.MapPointToPixelRel(mp2).Y

 Me.Text = Format(mp2.Lat, "#.000000") & "    " & Format(mp2.Lon, "#.000000")

' Se il puntatore del mouse è all'interno dell'area stabilita, viene mostrato in quel punto un "Balloon":
 If rct.Contains(x, y) Then 
   Balloon.Info("Anfiteatro Flavio (Colosseo)", MapView1, x, y)
 Else 
   Balloon.Hide
 Endif

End