Differenze tra le versioni di "Eliminare un marcatore grafico da una mappa su una MapView"
(4 versioni intermedie di uno stesso utente non sono mostrate) | |||
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() | |
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 | |
− | + | ||
+ | Public Sub Form_Open() | ||
Dim mp As New MapPoint | Dim mp As New MapPoint | ||
Riga 22: | Riga 23: | ||
.Zoom = 10 | .Zoom = 10 | ||
<FONT Color=gray>' ''Imposta e mostra un punto marcatore delle coordinate:''</font> | <FONT Color=gray>' ''Imposta e mostra un punto marcatore delle coordinate:''</font> | ||
− | .AddShape("figura").AddPoint("marcatore", mp, Color.Default, Null) | + | .AddShape("<FONT Color=darkgreen>figura</font>").AddPoint("marcatore", mp, Color.Default, Null) |
End With | End With | ||
− | + | End | |
− | + | ||
+ | Public Sub MapView1_MouseUp() | ||
Dim pt As New Point(Mouse.X, Mouse.Y) | Dim pt As New Point(Mouse.X, Mouse.Y) | ||
Riga 37: | Riga 39: | ||
<FONT Color=gray>' '''''Elimina la figura (shape) precedentemente impostata.'' | <FONT Color=gray>' '''''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.'''''</font> | ' ''Affinché il marcatore grafico sia eliminato, va specificata nel Metodo ".Remove()" della Classe ''Map'' la sua chiave gerarchicamente sovraordinata identificativa, quale "Shape" generico.'''''</font> | ||
− | .Map.<FONT Color=#B22222><B>Remove</b></font>("figura") | + | .Map.<FONT Color=#B22222><B>Remove</b></font>("<FONT Color=darkgreen>figura</font>") |
<FONT Color=gray>' ''Aggiunge una nuova figura (shape) alle coordinate ricavate dal puntatore:''</font> | <FONT Color=gray>' ''Aggiunge una nuova figura (shape) alle coordinate ricavate dal puntatore:''</font> | ||
− | .Map.AddShape("figura").AddPoint(" | + | .Map.AddShape("<FONT Color=darkgreen>figura</font>").AddPoint("marcatore", mp, Color.Default, Null) |
.Refresh() | .Refresh() | ||
.Map.Refresh() | .Map.Refresh() | ||
End With | End With | ||
− | + | End | |
− | + | ===Eliminare più item (''Shape'') inseriti=== | |
Gli "item" vengono inseriti dal Metodo ".AddShape()" come <SPAN Style="text-decoration:underline">in un array</span>. Pertanto, quando si intende eliminare uno o più item inseriti, bisognerà tenerne conto. | Gli "item" vengono inseriti dal Metodo ".AddShape()" come <SPAN Style="text-decoration:underline">in un array</span>. Pertanto, quando si intende eliminare uno o più item inseriti, bisognerà tenerne conto. | ||
− | <BR>In particolare va detto che il Metodo ".Remove()" elimina il <SPAN Style="text-decoration:underline">primo</span> elemento (item) inserito. Pertanto se si vogliono eliminare gli ''item'' inseriti | + | <BR>In particolare va detto che il Metodo ".Remove()" elimina il <SPAN Style="text-decoration:underline">primo</span> 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: | Mostriamo un esempio pratico: | ||
− | + | Public Sub Form_Open() | |
With MapView1.Map | With MapView1.Map | ||
Riga 60: | Riga 62: | ||
End With | End With | ||
− | + | End | |
+ | |||
− | + | Public Sub MapView1_MouseUp() | |
Dim pt As New Point(Mouse.X, Mouse.Y) | Dim pt As New Point(Mouse.X, Mouse.Y) | ||
Riga 69: | Riga 72: | ||
If Mouse.Right Then | If Mouse.Right Then | ||
With MapView1 | With MapView1 | ||
− | .Map.AddShape("cerchi").AddCircle("cerchio", MapPoint(.Map.PixelToMapPointRel(pt).Lat, .Map.PixelToMapPointRel(pt).Lon), 50, Color.Orange, 30, Line.Solid) | + | .Map.AddShape("<FONT Color=darkgreen>cerchi</font>").AddCircle("cerchio", MapPoint(.Map.PixelToMapPointRel(pt).Lat, .Map.PixelToMapPointRel(pt).Lon), 50, Color.Orange, 30, Line.Solid) |
.refresh() | .refresh() | ||
End With | End With | ||
Riga 75: | Riga 78: | ||
<FONT Color=gray>' ''Se si clicca con il tasto centrale del mouse, si eliminano in una sola volta tutti i cerchi inseriti:''</font> | <FONT Color=gray>' ''Se si clicca con il tasto centrale del mouse, si eliminano in una sola volta tutti i cerchi inseriti:''</font> | ||
− | If Mouse.Middle And Object.IsValid(MapView1.Map.GetShape("cerchi")) Then | + | If Mouse.Middle And Object.IsValid(MapView1.Map.GetShape("<FONT Color=darkgreen>cerchi</font>")) Then |
<FONT Color=gray>' ''Compie un ciclo pari al numero di item validi inseriti:''</font> | <FONT Color=gray>' ''Compie un ciclo pari al numero di item validi inseriti:''</font> | ||
Repeat | Repeat | ||
With MapView1 | With MapView1 | ||
− | .Map.<FONT Color=#B22222><B>Remove</b></font>("cerchi") | + | .Map.<FONT Color=#B22222><B>Remove</b></font>("<FONT Color=darkgreen>cerchi</font>") |
.Refresh() | .Refresh() | ||
End With | End With | ||
<FONT Color=gray>' ''Compie un ciclo fino a che l'Oggetto "_MapShape" è valido, ossia fino a che sono ancora presenti gli item precedentemente inseriti:''</font> | <FONT Color=gray>' ''Compie un ciclo fino a che l'Oggetto "_MapShape" è valido, ossia fino a che sono ancora presenti gli item precedentemente inseriti:''</font> | ||
− | Until Not Object.IsValid(MapView1.Map.GetShape("cerchi")) | + | Until Not Object.IsValid(MapView1.Map.GetShape("<FONT Color=darkgreen>cerchi</font>")) |
Endif | Endif | ||
− | + | 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