Differenze tra le versioni di "Usare il Metodo 'AddPolyLine' di gb.map"

Da Gambas-it.org - Wikipedia.
Riga 10: Riga 10:
 
  '''Public''' Sub Form_Open()
 
  '''Public''' Sub Form_Open()
 
    
 
    
   MapView1.Map.AddTile("GoogleMap", "http://mt0.google.com/vt/lyrs=s&hl=&x={x}&y={y}&z={z}")
+
   MapView1.Map.AddTile("GoogleMap", "http://mt0.google.com/vt/lyrs=s&hl=&x={x}&y={y}&z={z}")
 
    
 
    
 
  '''End'''
 
  '''End'''
Riga 32: Riga 32:
  
  
===Con chiusura temporanea del poligono sulla base dei punti stabiliti con il MOuse===
+
===Con chiusura temporanea del poligono sulla base dei punti stabiliti con il Mouse===
  
 
  Private MapView1 As MapView
 
  Private MapView1 As MapView
Riga 50: Riga 50:
 
     .W = Me.W
 
     .W = Me.W
 
     .H = Me.H
 
     .H = Me.H
     .Map.AddTile("GoogleMap", "http://mt0.google.com/vt/lyrs=s&hl=&x={x}&y={y}&z={z}")
+
     .Map.AddTile("GoogleMap", "http://mt0.google.com/vt/lyrs=s&hl=&x={x}&y={y}&z={z}")
 
   End With
 
   End With
 
    
 
    
Riga 84: Riga 84:
 
       If mmpp.Count > 2 Then mmpp.Push(mmpp[0])
 
       If mmpp.Count > 2 Then mmpp.Push(mmpp[0])
 
  <FONT Color=gray>' ''Disegna l'attuale poligono in base ai punti sino ad ora impostati con il mouse sulla mappa:''</font>
 
  <FONT Color=gray>' ''Disegna l'attuale poligono in base ai punti sino ad ora impostati con il mouse sulla mappa:''</font>
       .Map.AddShape("polyline").AddPolyLine("polyline", mmpp, Color.Red, 1, 4)
+
       .Map.AddShape("polyline").<FONT Color=#B22222>AddPolyLine</font>("polyline", mmpp, Color.Red, 1, 4)
 
       .Refresh()
 
       .Refresh()
 
       .Map.Refresh()
 
       .Map.Refresh()

Versione delle 16:27, 7 apr 2021

IL Metodo ".AddPolyLine( )" del Metodo .AddShape( ) della Classe Map consente di creare linee di collegamento fra i vari punti marcatori delle coordinate.

Esso si serve di un vettore di tipo MapPoint contenente due o più punti di coordinate di latitudine e longitudine.


Mostriamo di seguito un semplice esempio, nel quale cliccando con il tasto destro del mouse si individuano sulla MapView i punti delle coordinate che saranno collegati fra loro da una linea di forma frammentata. [Nota 1]

Private mmpp As New MapPoint[]


Public Sub Form_Open()
 
 MapView1.Map.AddTile("GoogleMap", "http://mt0.google.com/vt/lyrs=s&hl=&x={x}&y={y}&z={z}")
 
End


Public Sub MapView1_MouseUp()
 
 Dim pt As New Point(Mouse.X, Mouse.Y)
 
 If Mouse.Right Then
   With MapView1
     mmpp.Push(.Map.PixelToMapPointRel(pt))
     .Map.AddShape("polyline").AddPolyLine("polyline", mmpp, Color.Red, 1, 4)
     .Refresh()
     .Map.Refresh()
   End With
 Endif
 
End


Con chiusura temporanea del poligono sulla base dei punti stabiliti con il Mouse

Private MapView1 As MapView
Private mmpp As New MapPoint[]


Public Sub Form_Open()
 
 With Me
   .W = Screen.AvailableWidth
   .H = Screen.AvailableHeight
 End With
 
 With MapView1 = New MapView(Me) As "MapView1"
   .X = 0
   .Y = 0
   .W = Me.W
   .H = Me.H
   .Map.AddTile("GoogleMap", "http://mt0.google.com/vt/lyrs=s&hl=&x={x}&y={y}&z={z}")
 End With
 
End
 
Public Sub MapView1_MouseWheel()
 
' Mostra il livello di zoom della mappa ad ogni rotazione della rotellina del mouse:
 Me.Text = "Zoom: " & CStr(MapView1.Map.Zoom)
 
End

Public Sub MapView1_MouseDown()
 
 Dim pt As New Point(Mouse.X, Mouse.Y)
 
' Mostra la latitudine e la longitudine del punto ove si è cliccato:
 Me.Text = "Lat. " & Format(MapView1.Map.PixelToMapPointRel(pt).Lat, "0.000000") &
           "  -  Lon. " & Format(MapView1.Map.PixelToMapPointRel(pt).Lon, "0.000000")
 
End

Public Sub MapView1_MouseUp()
 
 Dim pt As New Point(Mouse.X, Mouse.Y)
 
 If Mouse.Middle Then
   With MapView1
' Se gli elementi dell'array "mmpp" sono più di due, rimuove l'ultimo elemento che è stato aggiunto con la seconda riga di comando sottostante:
     If mmpp.Count > 2 Then mmpp.Remove(mmpp.Max)
     mmpp.Push(.Map.PixelToMapPointRel(pt))
' Se gli elementi dell'array "mmpp" sono più di due, aggiunge un elemento con coordinate eguali al primo punto di "MapPoint" per chiudere temporaneamente il poligono:
     If mmpp.Count > 2 Then mmpp.Push(mmpp[0])
' Disegna l'attuale poligono in base ai punti sino ad ora impostati con il mouse sulla mappa:
     .Map.AddShape("polyline").AddPolyLine("polyline", mmpp, Color.Red, 1, 4)
     .Refresh()
     .Map.Refresh()
   End With
 Endif 
    
End


Note

[1] Qualora la mappa non appaia, verificare la versione GoogleMap, ed eventualmente modificarla in questo punto: ["version": "894"]
Al riguardo vedere: Conoscere la versione più recente di Google Maps satellite