Differenze tra le versioni di "Utilizzando un Oggetto di visualizzazione diverso da una MapView consentire uno spostamento morbido e uniforme della mappa"

Da Gambas-it.org - Wikipedia.
 
Riga 29: Riga 29:
 
   
 
   
 
  <FONT Color=darkgreen>' ''Le seguenti righe di comando consentono uno spostamento morbido e uniforme della mappa per ciascun livello di zoom:''</font>
 
  <FONT Color=darkgreen>' ''Le seguenti righe di comando consentono uno spostamento morbido e uniforme della mappa per ciascun livello di zoom:''</font>
   mappa.Center.Lat = Geo.PixelToMapPoint(pix, mappa.Zoom).Lat
+
   <FONT Color=#B22222>mappa.Center.Lat = Geo.PixelToMapPoint(pix, mappa.Zoom).Lat
   mappa.Center.Lon = Geo.PixelToMapPoint(pix, mappa.Zoom).Lon
+
   mappa.Center.Lon = Geo.PixelToMapPoint(pix, mappa.Zoom).Lon</font>
 
   
 
   
 
  End
 
  End

Versione attuale delle 16:25, 22 mag 2023

Utilizzando un Oggetto di visualizzazione diverso da una MapView (ad esempio una DrawingArea oppure una ImageView)l lo spostamento della mappa mediante il puntatore del mouse non avviene in modo omogeneo e coerente con il mouse.

Per consentire dunque lo spostamento morbido, coerente e uniforme della mappa con il movimento del puntatore del mouse, bisogna in particolare utilizzare alcune risorse della Classe statica "Geo" del Componente "gb.map".

Mostriamo gli elementi essenziali e necessari del codice per ottenere quel risultato, usando ad esempio una DrawingArea:

Private mappa As Map
Private mx As Integer
Private my As Integer
Private pt As New Point
Private cpx As New Point

Public Sub DrawingArea1_MouseDown()  

 pt = Point(Mouse.X, Mouse.Y)

 mx = pt.X  
 my = pt.Y

 cpx = Geo.MapPointToPixel(mappa.Center, mappa.Zoom)

End

Public Sub DrawingArea1_MouseMove()  

 Dim pix As New Point(cpx.X, cpx.Y)

 pix.X += mx - Mouse.X
 pix.Y += my - Mouse.Y

' Le seguenti righe di comando consentono uno spostamento morbido e uniforme della mappa per ciascun livello di zoom:
 mappa.Center.Lat = Geo.PixelToMapPoint(pix, mappa.Zoom).Lat
 mappa.Center.Lon = Geo.PixelToMapPoint(pix, mappa.Zoom).Lon

End