Differenze tra le versioni di "Usare il Metodo .AddPolygon di gb.map"
(2 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 4: | Riga 4: | ||
<BR>La quantità di Oggetti o di Classi statiche di tipo "MapPoint" determina la quantità di angoli costituenti il poligono che verrà disegnato sulla "MapView". | <BR>La quantità di Oggetti o di Classi statiche di tipo "MapPoint" determina la quantità di angoli costituenti il poligono che verrà disegnato sulla "MapView". | ||
− | Mostriamo un esempio, nel quale, cliccando con il tasto destro su quattro punti diversi sulla mappa, si disegnerà un poligono di quattro lati: | + | Mostriamo un esempio, nel quale, cliccando con il tasto <U>destro</u> su quattro punti diversi sulla mappa, si disegnerà un poligono di <U>quattro</u> lati: |
Private MapView1 As MapView | Private MapView1 As MapView | ||
Private llaa As Float[] | Private llaa As Float[] | ||
Private lloo As Float[] | Private lloo As Float[] | ||
− | Private mmpp As <FONT Color= | + | Private <FONT Color=darkorange>mmpp</font> As <FONT Color=darkorange>MapPoint[][]</font> |
Riga 48: | Riga 48: | ||
If llaa.count == 4 Then | If llaa.count == 4 Then | ||
<FONT Color=gray>' ''Al Metodo ".AddPolygon()" si dovrà poi passare un vettore bidimensionale "MapPoint[][]":''</font> | <FONT Color=gray>' ''Al Metodo ".AddPolygon()" si dovrà poi passare un vettore bidimensionale "MapPoint[][]":''</font> | ||
− | mmpp = [[MapPoint(llaa[0], lloo[0]), MapPoint(llaa[1], lloo[1]), MapPoint(llaa[2], lloo[2]), MapPoint(llaa[3], lloo[3])]] | + | <FONT Color=darkorange>mmpp</font> = [[MapPoint(llaa[0], lloo[0]), MapPoint(llaa[1], lloo[1]), MapPoint(llaa[2], lloo[2]), MapPoint(llaa[3], lloo[3])]] |
<FONT Color=gray>' ''Volendo si potrebbe anche porre al centro della mappa il poligono disegnato - ad esempio - sulla base delle prime coordinate impostate (ossia del primo vertice impostato):'' | <FONT Color=gray>' ''Volendo si potrebbe anche porre al centro della mappa il poligono disegnato - ad esempio - sulla base delle prime coordinate impostate (ossia del primo vertice impostato):'' | ||
' '''MapView1.Map.Center = MapPoint.GetCenter(mmpp[0])'''</font> | ' '''MapView1.Map.Center = MapPoint.GetCenter(mmpp[0])'''</font> | ||
Riga 63: | Riga 63: | ||
With MapView1 | With MapView1 | ||
<FONT Color=gray>' ''Si usa dunque il Metodo ".AddPolygon()", per disegnare sulla "MapView" il poligono, e gli si passa il vettore bidimensionale "mmpp[][]":''</font> | <FONT Color=gray>' ''Si usa dunque il Metodo ".AddPolygon()", per disegnare sulla "MapView" il poligono, e gli si passa il vettore bidimensionale "mmpp[][]":''</font> | ||
− | .Map.AddShape("polygon").<FONT Color= | + | .Map.AddShape("polygon").<FONT Color=red>AddPolygon</font>("polygon", <FONT Color=darkorange>mmpp</font>, Color.Red, 1, Line.DashDot) |
.Refresh() | .Refresh() | ||
End With | End With | ||
− | mmpp = Null | + | <FONT Color=darkorange>mmpp</font> = Null |
llaa = Null | llaa = Null | ||
lloo = Null | lloo = Null | ||
End | End | ||
− | In quest'altro esempio, cliccando con il tasto destro del mouse si individuano sulla "MapView" i punti delle coordinate che rappresentano la tessera (tile), parte della mappa e contenente il punto ove si è cliccato. Tali coordinate formeranno un poligono quadrato. | + | In quest'altro esempio, cliccando con il tasto destro del mouse si individuano sulla "MapView" i punti delle coordinate che rappresentano la tessera (tile), parte della mappa e contenente il punto ove si è cliccato. |
+ | <BR>Tali coordinate formeranno un poligono quadrato. | ||
Private MapView1 As MapView | Private MapView1 As MapView | ||
− | Private mmpp As <FONT Color= | + | Private <FONT Color=darkorange>mmpp</font> As <FONT Color=darkorange>MapPoint[][]</font> |
Riga 105: | Riga 106: | ||
<FONT Color=gray>' ''Al Metodo ".AddPolygon()" si dovrà poi passare un vettore bidimensionale "MapPoint[][]":''</font> | <FONT Color=gray>' ''Al Metodo ".AddPolygon()" si dovrà poi passare un vettore bidimensionale "MapPoint[][]":''</font> | ||
− | mmpp = [[MapPoint(mb.North, mb.Est), MapPoint(mb.North, mb.West), MapPoint(mb.South, mb.West), MapPoint(mb.South, mb.Est)]] | + | <FONT Color=darkorange>mmpp</font> = [[MapPoint(mb.North, mb.Est), MapPoint(mb.North, mb.West), MapPoint(mb.South, mb.West), MapPoint(mb.South, mb.Est)]] |
<FONT Color=gray>' ''Mostra la latitudine e la longitudine del punto ove si è cliccato, nonché i numeri identificativi (x, y) della tessera corrispondente a quel punto:''</font> | <FONT Color=gray>' ''Mostra la latitudine e la longitudine del punto ove si è cliccato, nonché i numeri identificativi (x, y) della tessera corrispondente a quel punto:''</font> | ||
Riga 121: | Riga 122: | ||
With MapView1 | With MapView1 | ||
<FONT Color=gray>' ''Si usa dunque il Metodo ".AddPolygon()", per disegnare sulla "MapView" il poligono, e gli si passa il vettore bidimensionale "mmpp[][]":''</font> | <FONT Color=gray>' ''Si usa dunque il Metodo ".AddPolygon()", per disegnare sulla "MapView" il poligono, e gli si passa il vettore bidimensionale "mmpp[][]":''</font> | ||
− | .Map.AddShape("polygon").<FONT Color= | + | .Map.AddShape("polygon").<FONT Color=red>AddPolygon</font>("polygon", <FONT Color=darkorange>mmpp</font>, Color.Red, 1, Line.DashDot) |
.Refresh() | .Refresh() | ||
End With | End With | ||
End | End |
Versione attuale delle 08:09, 20 ott 2024
Il Metodo ".AddPolygon()" del Metodo ".AddShape()" della Classe "Map" consente di creare poligoni (da tre lati in su).
Esso si serve di un vettore bidimensionale di tipo "MapPoint" contenente tre o più Oggetti di tale tipo. All'interno di tale vettore bidimensionale è possibile usare anche la Classe "MapPoint" come statica.
La quantità di Oggetti o di Classi statiche di tipo "MapPoint" determina la quantità di angoli costituenti il poligono che verrà disegnato sulla "MapView".
Mostriamo un esempio, nel quale, cliccando con il tasto destro su quattro punti diversi sulla mappa, si disegnerà un poligono di quattro lati:
Private MapView1 As MapView Private llaa As Float[] Private lloo As Float[] Private mmpp As 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}") .Map.Center = MapPoint(41.8903, 12.49226) .Map.Zoom = 14 End With End Public Sub MapView1_MouseDown() Dim pt As New Point(Mouse.X, Mouse.Y) Dim lat As Float = MapView1.Map.PixelToMapPointRel(pt).Lat Dim lon As Float = MapView1.Map.PixelToMapPointRel(pt).Lon ' Mostra la latitudine e la longitudine del punto ove si è cliccato: Me.Text = "Lat. " & Format(lat, "0.000000") & " - Lon. " & Format(lon, "0.000000") If Not Mouse.Right Then Return If Not Object.IsValid(llaa) Then llaa = New Float[] lloo = New Float[] Endif llaa.Push(lat) lloo.Push(lon) If llaa.count == 4 Then ' Al Metodo ".AddPolygon()" si dovrà poi passare un vettore bidimensionale "MapPoint[][]": mmpp = [[MapPoint(llaa[0], lloo[0]), MapPoint(llaa[1], lloo[1]), MapPoint(llaa[2], lloo[2]), MapPoint(llaa[3], lloo[3])]] ' Volendo si potrebbe anche porre al centro della mappa il poligono disegnato - ad esempio - sulla base delle prime coordinate impostate (ossia del primo vertice impostato): ' MapView1.Map.Center = MapPoint.GetCenter(mmpp[0]) Endif End Public Sub MapView1_MouseUp() If Not Mouse.Right Then Return If llaa.Count < 4 Then Return With MapView1 ' Si usa dunque il Metodo ".AddPolygon()", per disegnare sulla "MapView" il poligono, e gli si passa il vettore bidimensionale "mmpp[][]": .Map.AddShape("polygon").AddPolygon("polygon", mmpp, Color.Red, 1, Line.DashDot) .Refresh() End With mmpp = Null llaa = Null lloo = Null End
In quest'altro esempio, cliccando con il tasto destro del mouse si individuano sulla "MapView" i punti delle coordinate che rappresentano la tessera (tile), parte della mappa e contenente il punto ove si è cliccato.
Tali coordinate formeranno un poligono quadrato.
Private MapView1 As MapView Private mmpp As 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}") .Map.Center = MapPoint(41.8903, 12.49226) .Map.Zoom = 14 End With End Public Sub MapView1_MouseDown() Dim pt As New Point(Mouse.X, Mouse.Y) Dim tl As Point Dim mb As MapBounds If Not Mouse.Right Then Return ' Individua la tessera (tile) della mappa che comprende il punto ove si è cliccato: tl = Geo.MapPointToTile(MapView1.Map.PixelToMapPointRel(pt), MapView1.Map.Zoom) mb = Geo.TileBounds(tl.X, tl.Y, MapView1.Map.Zoom) ' Al Metodo ".AddPolygon()" si dovrà poi passare un vettore bidimensionale "MapPoint[][]": mmpp = [[MapPoint(mb.North, mb.Est), MapPoint(mb.North, mb.West), MapPoint(mb.South, mb.West), MapPoint(mb.South, mb.Est)]] ' Mostra la latitudine e la longitudine del punto ove si è cliccato, nonché i numeri identificativi (x, y) della tessera corrispondente a quel punto: Me.Text = "Lat. " & Format(MapView1.Map.PixelToMapPointRel(pt).Lat, "0.000000") & " - Lon. " & Format(MapView1.Map.PixelToMapPointRel(pt).Lon, "0.000000") & " - Tessera: " & tl End Public Sub MapView1_MouseUp() If Not Mouse.Right Then Return With MapView1 ' Si usa dunque il Metodo ".AddPolygon()", per disegnare sulla "MapView" il poligono, e gli si passa il vettore bidimensionale "mmpp[][]": .Map.AddShape("polygon").AddPolygon("polygon", mmpp, Color.Red, 1, Line.DashDot) .Refresh() End With End