Differenze tra le versioni di "Individuare le coordinate geografiche su una MapView dal puntatore del mouse"

Da Gambas-it.org - Wikipedia.
Riga 46: Riga 46:
 
   Dim mp As MapPoint = MapView1.Map.PixelToMapPointRel(pt)
 
   Dim mp As MapPoint = MapView1.Map.PixelToMapPointRel(pt)
 
    
 
    
   Me.Text = "Lat. = " & Format(mp.Lat, "#.000000") & "  " & "Lon. = " & Format(mp.Lat, "#.000000")
+
   Me.Text = "Lat. = " & Format(mp.Lat, "#.000000") & "  " & "Lon. = " & Format(mp.Lon, "#.000000")
 
    
 
    
 
  '''End'''
 
  '''End'''

Versione delle 09:01, 19 ott 2021

Per individuare le coordinate geografiche in gradi decimali (DD) dal puntatore del mouse posto su una MapViewer, è necessario prima assegnare alle proprietà ".X" e ".Y" di un oggetto della Classe Point il valore risultante rispettivamente dalla proprietà "Mouse.X" e "Mouse.Y", successivamente passare tale oggetto Point al Metodo "MapView1.Map.PixelToMapPointRel( )" leggendo contestualmente la proprietà ".Lat", per ottenere la "Latitudine", la proprietà ".Lon", per ottenere la "Longitudine".

Ovviamente le proprietà "Mouse.X" e "Mouse.Y" dovranno essere presenti e lette all'interno di un evento del mouse.

Mostriamo un semplice esempio:

Public Sub MapView1_MouseUp()
 
 Dim pt As New Point(Mouse.X, Mouse.Y)
 
 Print " Latitudine "; MapView1.Map.PixelToMapPointRel(pt).Lat; " -  Longitudine "; MapView1.Map.PixelToMapPointRel(pt).Lon
 
End

Ottenere le coordinate geografiche passando il puntatore del mouse sulla mappa

In questo esempio pratico si otterranno le coordinate geografiche semplicemente passando il puntatore del mouse sulla mappa (non è necessario tenere premuto un tasto del mouse mentre lo si sposta).

Private MapView1 As MapView


Public Sub _new()
 
 With Me
   .W = Screen.AvailableWidth
   .H = Screen.AvailableHeight
   .Arrangement = Arrange.Fill
 End With
 With MapView1 = New MapView(Me) As "MapView1"
   .X = 0
   .Y = 0
 End With
 
End 

Public Sub Form_Open()
 
 With MapView1.Map
  .AddTile("Open Topo", "https://a.tile.opentopomap.org/{z}/{x}/{y}.png")
  .Zoom = 15
  .Center = MapPoint(41.89018, 12.49230)
End With
 
End

Public Sub MapView1_MouseMove()

 Dim pt As New Point(Mouse.X, Mouse.Y)
 Dim mp As MapPoint = MapView1.Map.PixelToMapPointRel(pt)
 
 Me.Text = "Lat. = " & Format(mp.Lat, "#.000000") & "   " & "Lon. = " & Format(mp.Lon, "#.000000")
 
End