Differenze tra le versioni di "Mostrare un Balloon sulla MapView se il puntatore del mouse è dentro una determinata area della mappa"
Da Gambas-it.org - Wikipedia.
Riga 22: | Riga 22: | ||
With MapView1.Map | With MapView1.Map | ||
<FONT Color=gray>' ''Imposta l'area (in tal caso un quadrato immaginario), che determinerà l'apparizione del "Balloon", qualora il puntatore del mouse dovesse capitarvi all'interno:''</font> | <FONT Color=gray>' ''Imposta l'area (in tal caso un quadrato immaginario), che determinerà l'apparizione del "Balloon", qualora il puntatore del mouse dovesse capitarvi all'interno:''</font> | ||
− | rct = Rect(.MapPointToPixelRel(mp1).X, .MapPointToPixelRel(mp1).Y, LATO + (( | + | rct = Rect(.MapPointToPixelRel(mp1).X, .MapPointToPixelRel(mp1).Y, LATO + ((LATO * .Zoom) / 15), LATO + ((LATO * .Zoom) / 15)) |
End With | End With | ||
Versione delle 21:50, 7 gen 2022
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 ' Si pone tale successiva istruzione all'interno di questo Evento della "MapView", afficnhé 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 + ((LATO * .Zoom) / 15), LATO + ((LATO * .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