Differenze tra le versioni di "Eliminare un marcatore grafico da una mappa su una MapView"

Da Gambas-it.org - Wikipedia.
 
Riga 5: Riga 5:
  
 
Mostriamo un esempio, nel quale all'apertura del programma sarà impostato e mostrato un punto marcatore delle coordinate preliminarmente impostate. Cliccando poi sull'oggetto ''MapView'' si eliminerà il punto precedentemente inserito e se ne imposterà uno nuovo alle coordinate individuate con il puntatore del mouse.
 
Mostriamo un esempio, nel quale all'apertura del programma sarà impostato e mostrato un punto marcatore delle coordinate preliminarmente impostate. Cliccando poi sull'oggetto ''MapView'' si eliminerà il punto precedentemente inserito e se ne imposterà uno nuovo alle coordinate individuate con il puntatore del mouse.
  '''Public''' Sub _New()
+
  Public Sub _New()
 
    
 
    
 
   MapView1.Map.AddTile("OpenTopo", "https://a.tile.opentopomap.org/{z}/{x}/{y}.png")
 
   MapView1.Map.AddTile("OpenTopo", "https://a.tile.opentopomap.org/{z}/{x}/{y}.png")
 
    
 
    
  '''End'''
+
  End  
 
   
 
   
  '''Public''' Sub Form_Open()
+
   
 +
Public Sub Form_Open()
 
    
 
    
 
   Dim mp As New MapPoint
 
   Dim mp As New MapPoint
Riga 25: Riga 26:
 
   End With
 
   End With
 
    
 
    
  '''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)
Riga 44: Riga 46:
 
   End With
 
   End With
 
      
 
      
  '''End'''
+
  End
  
  
Riga 52: Riga 54:
  
 
Mostriamo un esempio pratico:
 
Mostriamo un esempio pratico:
  '''Public''' Sub Form_Open()
+
  Public Sub Form_Open()
 
    
 
    
 
   With MapView1.Map
 
   With MapView1.Map
Riga 60: Riga 62:
 
   End With
 
   End With
 
    
 
    
  '''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)
Riga 86: Riga 89:
 
   Endif  
 
   Endif  
 
    
 
    
  '''End'''
+
  End

Versione attuale delle 16:30, 8 giu 2024

Un marcatore grafico è un elemento opzionale ("item") che può essere aggiunto e mostrato, come figura grafica (shape), in una mappa.
Esso è caricato in una MapView, mediante i Metodi ".AddCircle()", ".AddMultipoint()", ".AddPoint()", ".AddPolygon()", ".AddPolyline()" del Metodo ".AddShape()", appartenente quest'ultimo alla Classe Map.

Per eliminare la figura grafica, ossia il marcatore grafico, precedentemente inserito, si dovrà utilizzare il Metodo ".Remove()" della Proprietà "Map" della Classe "MapView", specificando la sua chiave gerarchicamente sovraordinata identificativa, quale Shape generico.

Mostriamo un esempio, nel quale all'apertura del programma sarà impostato e mostrato un punto marcatore delle coordinate preliminarmente impostate. Cliccando poi sull'oggetto MapView si eliminerà il punto precedentemente inserito e se ne imposterà uno nuovo alle coordinate individuate con il puntatore del mouse.

Public Sub _New()
 
 MapView1.Map.AddTile("OpenTopo", "https://a.tile.opentopomap.org/{z}/{x}/{y}.png")
 
End 


Public Sub Form_Open()
 
 Dim mp As New MapPoint
 
 mp.Lat = 41.8902142
 mp.Lon = 12.4900422
 
 With MapView1.Map
   .Center = mp
   .Zoom = 10
' Imposta e mostra un punto marcatore delle coordinate:
   .AddShape("figura").AddPoint("marcatore", mp, Color.Default, Null)
 End With
 
End


Public Sub MapView1_MouseUp()
 
 Dim pt As New Point(Mouse.X, Mouse.Y)
 Dim mp As New MapPoint
 
 With MapView1
' Ottiene le coordinate geografiche del punto ove si è cliccato sulla "MapView":
   mp = .Map.PixelToMapPointRel(pt)
' Elimina la figura (shape) precedentemente impostata.
' Affinché il marcatore grafico sia eliminato, va specificata nel Metodo ".Remove()" della Classe Map la sua chiave gerarchicamente sovraordinata identificativa, quale "Shape" generico.
   .Map.Remove("figura")
' Aggiunge una nuova figura (shape) alle coordinate ricavate dal puntatore:
   .Map.AddShape("figura").AddPoint("marcatore", mp, Color.Default, Null)
   .Refresh()
   .Map.Refresh()
 End With
   
End


Eliminare più item (Shape) inseriti

Gli "item" vengono inseriti dal Metodo ".AddShape()" come in un array. Pertanto, quando si intende eliminare uno o più item inseriti, bisognerà tenerne conto.
In particolare va detto che il Metodo ".Remove()" elimina il primo elemento (item) inserito. Pertanto, se si vogliono eliminare gli item inseriti e aventi la medesima chiave identificatrice, bisognerà utilizzare un ciclo. Ciò significa che - come peraltro già scritto - volendo eliminare "item", bisognerà tenere il conto nel programma di quanti "item" vengono inseriti nella mappa.

Mostriamo un esempio pratico:

Public Sub Form_Open()
 
 With MapView1.Map
   .AddTile("OpenTopo", "https://a.tile.opentopomap.org/{z}/{x}/{y}.png")
   .Center = MapPoint(41.8902142, 12.4900422)
   .Zoom = 12
 End With
 
End


Public Sub MapView1_MouseUp()
 
 Dim pt As New Point(Mouse.X, Mouse.Y)
 
' Se si clicca con il tasto destro del mouse, si inserisce un cerchio:
 If Mouse.Right Then 
   With MapView1
     .Map.AddShape("cerchi").AddCircle("cerchio", MapPoint(.Map.PixelToMapPointRel(pt).Lat, .Map.PixelToMapPointRel(pt).Lon), 50, Color.Orange, 30, Line.Solid)
     .refresh()
   End With 
 Endif 
 
' Se si clicca con il tasto centrale del mouse, si eliminano in una sola volta tutti i cerchi inseriti:
 If Mouse.Middle And Object.IsValid(MapView1.Map.GetShape("cerchi")) Then 
' Compie un ciclo pari al numero di item validi inseriti:
   Repeat
     With MapView1
       .Map.Remove("cerchi")
       .Refresh()
     End With 
' Compie un ciclo fino a che l'Oggetto "_MapShape" è valido, ossia fino a che sono ancora presenti gli item precedentemente inseriti:
   Until Not Object.IsValid(MapView1.Map.GetShape("cerchi"))
 Endif 
 
End