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

Da Gambas-it.org - Wikipedia.
 
(7 versioni intermedie di uno stesso utente non sono mostrate)
Riga 5: Riga 5:
 
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.
 
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.
 
  Private MapView1 As MapView
 
  Private MapView1 As MapView
  Private mmpp As New MapPoint[]
+
  Private <FONT Color=darkorange>mmpp</font> As New <FONT Color=darkorange>MapPoint[]</font>
 
   
 
   
 
   
 
   
  '''Public''' Sub Form_Open()
+
  Public Sub Form_Open()
 
    
 
    
 
   With Me
 
   With Me
 
     .W = Screen.AvailableWidth
 
     .W = Screen.AvailableWidth
 
     .H = Screen.AvailableHeight
 
     .H = Screen.AvailableHeight
 +
    .Arrangement = Arrange.Fill
 
   End With
 
   End With
 
    
 
    
 
   With MapView1 = New MapView(Me) As "MapView1"
 
   With MapView1 = New MapView(Me) As "MapView1"
    .X = 0
 
    .Y = 0
 
    .W = Me.W
 
    .H = Me.H
 
 
     .Map.AddTile("GoogleMap", "http&#058;//mt0.google.com/vt/lyrs=s&hl=&x={x}&y={y}&z={z}")
 
     .Map.AddTile("GoogleMap", "http&#058;//mt0.google.com/vt/lyrs=s&hl=&x={x}&y={y}&z={z}")
 
   End With
 
   End With
 
    
 
    
  '''End'''
+
  End
 +
 
    
 
    
  '''Public''' Sub MapView1_MouseWheel()
+
  Public Sub MapView1_MouseWheel()
 
    
 
    
 
  <FONT Color=gray>' ''Mostra il livello di zoom della mappa ad ogni rotazione della rotellina del mouse:''</font>
 
  <FONT Color=gray>' ''Mostra il livello di zoom della mappa ad ogni rotazione della rotellina del mouse:''</font>
 
   Me.Text = "Zoom: " & CStr(MapView1.Map.Zoom)
 
   Me.Text = "Zoom: " & CStr(MapView1.Map.Zoom)
 
    
 
    
  '''End'''
+
  End
 
   
 
   
  '''Public''' Sub MapView1_MouseDown()
+
   
 +
Public Sub MapView1_MouseDown()
 
    
 
    
 
   Dim pt As New Point(Mouse.X, Mouse.Y)
 
   Dim pt As New Point(Mouse.X, Mouse.Y)
Riga 39: Riga 38:
 
   Me.Text = "Lat. " & Format(MapView1.Map.PixelToMapPointRel(pt).Lat, "0.000000") &
 
   Me.Text = "Lat. " & Format(MapView1.Map.PixelToMapPointRel(pt).Lat, "0.000000") &
 
             "  -  Lon. " & Format(MapView1.Map.PixelToMapPointRel(pt).Lon, "0.000000")
 
             "  -  Lon. " & Format(MapView1.Map.PixelToMapPointRel(pt).Lon, "0.000000")
 
 
'''End'''
 
 
   
 
   
  '''Public''' Sub MapView1_MouseUp()
+
  End
 +
 +
 +
Public Sub MapView1_MouseUp()
 
    
 
    
 
   Dim pt As New Point(Mouse.X, Mouse.Y)
 
   Dim pt As New Point(Mouse.X, Mouse.Y)
Riga 48: Riga 48:
 
   If Mouse.Right Then
 
   If Mouse.Right Then
 
     With MapView1
 
     With MapView1
       mmpp.Push(.Map.PixelToMapPointRel(pt))
+
       <FONT Color=darkorange>mmpp</font>.Push(.Map.PixelToMapPointRel(pt))
       .Map.AddShape("polyline").<FONT Color=#B22222>AddPolyLine</font>("polyline", mmpp, Color.Red, 1, 4)
+
       .Map.AddShape("polyline").<FONT Color=red>AddPolyLine</font>("polyline", <FONT Color=darkorange>mmpp</font>, Color.Red, 1, 4)
 
       .Refresh()
 
       .Refresh()
      .Map.Refresh()
 
 
     End With
 
     End With
 
   Endif
 
   Endif
 
    
 
    
  '''End'''
+
  End
  
  
  
===Con chiusura temporanea del poligono sulla base dei punti stabiliti di volta in volta con il Mouse===
+
===Con disegno di un poligono mediante la chiusura temporanea della sua area sulla base dei punti stabiliti di volta in volta con il mouse===
 +
In quest'altro esempio usando il Metodo ".PolyLine()", se è stato cliccato con il tasto destro del mouse su più di due punti, viene disegnato il poligono, che ne deriva, mediante la chiusura temporanea della sua area con un segmento/lato aggiuntivo che collega l'ultimo punto immesso con il primo.
 
  Private MapView1 As MapView
 
  Private MapView1 As MapView
  Private mmpp As New MapPoint[]
+
  Private <FONT Color=darkorange>mmpp</font> As New <FONT Color=darkorange>MapPoint[]</font>
 +
 
   
 
   
 +
Public Sub Form_Open()
 
   
 
   
'''Public''' Sub Form_Open()
 
 
 
 
   With Me
 
   With Me
 
     .W = Screen.AvailableWidth
 
     .W = Screen.AvailableWidth
 
     .H = Screen.AvailableHeight
 
     .H = Screen.AvailableHeight
 +
    .Arrangement = Arrange.Fill
 
   End With
 
   End With
 
    
 
    
 
   With MapView1 = New MapView(Me) As "MapView1"
 
   With MapView1 = New MapView(Me) As "MapView1"
    .X = 0
 
    .Y = 0
 
    .W = Me.W
 
    .H = Me.H
 
 
     .Map.AddTile("GoogleMap", "http&#058;//mt0.google.com/vt/lyrs=s&hl=&x={x}&y={y}&z={z}")
 
     .Map.AddTile("GoogleMap", "http&#058;//mt0.google.com/vt/lyrs=s&hl=&x={x}&y={y}&z={z}")
 
   End With
 
   End With
 
    
 
    
  '''End'''
+
   
 +
End
 +
 
    
 
    
  '''Public''' Sub MapView1_MouseWheel()
+
  Public Sub MapView1_MouseWheel()
 
    
 
    
 
  <FONT Color=gray>' ''Mostra il livello di zoom della mappa ad ogni rotazione della rotellina del mouse:''</font>
 
  <FONT Color=gray>' ''Mostra il livello di zoom della mappa ad ogni rotazione della rotellina del mouse:''</font>
 
   Me.Text = "Zoom: " & CStr(MapView1.Map.Zoom)
 
   Me.Text = "Zoom: " & CStr(MapView1.Map.Zoom)
 
    
 
    
  '''End'''
+
  End
 +
 
   
 
   
  '''Public''' Sub MapView1_MouseDown()
+
  Public Sub MapView1_MouseDown()
 
    
 
    
 
   Dim pt As New Point(Mouse.X, Mouse.Y)
 
   Dim pt As New Point(Mouse.X, Mouse.Y)
Riga 96: Riga 96:
 
             "  -  Lon. " & Format(MapView1.Map.PixelToMapPointRel(pt).Lon, "0.000000")
 
             "  -  Lon. " & Format(MapView1.Map.PixelToMapPointRel(pt).Lon, "0.000000")
 
    
 
    
  '''End'''
+
  End
 
   
 
   
  '''Public''' Sub MapView1_MouseUp()
+
   
 +
Public Sub MapView1_MouseUp()
 
    
 
    
 
   Dim pt As New Point(Mouse.X, Mouse.Y)
 
   Dim pt As New Point(Mouse.X, Mouse.Y)
 
    
 
    
   If Mouse.Middle Then
+
   If Mouse.Right Then
 
     With MapView1
 
     With MapView1
 
  <FONT Color=gray>' ''Se gli elementi dell'array "mmpp" sono più di due, rimuove l'ultimo elemento che è stato aggiunto con la seconda riga di comando sottostante:''</font>
 
  <FONT Color=gray>' ''Se gli elementi dell'array "mmpp" sono più di due, rimuove l'ultimo elemento che è stato aggiunto con la seconda riga di comando sottostante:''</font>
       If mmpp.Count > 2 Then mmpp.Remove(mmpp.Max)
+
       If <FONT Color=darkorange>mmpp</font>.Count > 2 Then <FONT Color=darkorange>mmpp</font>.Remove(<FONT Color=darkorange>mmpp</font>.Max)
       mmpp.Push(.Map.PixelToMapPointRel(pt))
+
       <FONT Color=darkorange>mmpp</font>.Push(.Map.PixelToMapPointRel(pt))
 
  <FONT Color=gray>' ''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:''</font>
 
  <FONT Color=gray>' ''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:''</font>
       If mmpp.Count > 2 Then mmpp.Push(mmpp[0])
+
       If <FONT Color=darkorange>mmpp</font>.Count > 2 Then <FONT Color=darkorange>mmpp</font>.Push(<FONT Color=darkorange>mmpp</font>[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").<FONT Color=#B22222>AddPolyLine</font>("polyline", mmpp, Color.Red, 1, 4)
+
       .Map.AddShape("polyline").<FONT Color=red>AddPolyLine</font>("polyline", <FONT Color=darkorange>mmpp</font>, Color.Red, 1, 4)
 
       .Refresh()
 
       .Refresh()
      .Map.Refresh()
 
 
     End With
 
     End With
 
   Endif  
 
   Endif  
 
      
 
      
  '''End'''
+
  End

Versione attuale delle 08:13, 20 ott 2024

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.

Private MapView1 As MapView
Private mmpp As New MapPoint[]


Public Sub Form_Open()
 
 With Me
   .W = Screen.AvailableWidth
   .H = Screen.AvailableHeight
   .Arrangement = Arrange.Fill
 End With
 
 With MapView1 = New MapView(Me) As "MapView1"
   .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.Right Then
   With MapView1
     mmpp.Push(.Map.PixelToMapPointRel(pt))
     .Map.AddShape("polyline").AddPolyLine("polyline", mmpp, Color.Red, 1, 4)
     .Refresh()
   End With
 Endif
 
End


Con disegno di un poligono mediante la chiusura temporanea della sua area sulla base dei punti stabiliti di volta in volta con il mouse

In quest'altro esempio usando il Metodo ".PolyLine()", se è stato cliccato con il tasto destro del mouse su più di due punti, viene disegnato il poligono, che ne deriva, mediante la chiusura temporanea della sua area con un segmento/lato aggiuntivo che collega l'ultimo punto immesso con il primo.

Private MapView1 As MapView
Private mmpp As New MapPoint[]


Public Sub Form_Open()

 With Me
   .W = Screen.AvailableWidth
   .H = Screen.AvailableHeight
   .Arrangement = Arrange.Fill
 End With
 
 With MapView1 = New MapView(Me) As "MapView1"
   .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.Right 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()
   End With
 Endif 
    
End