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

Da Gambas-it.org - Wikipedia.
Riga 19: Riga 19:
 
   With MapView1 = New MapView(Me) As "MapView1"
 
   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.AddTile("GoogleMap", "http://mt0.google.com/vt/lyrs=s&hl=&x={x}&y={y}&z={z}")
     .Map.Center = MapPoint(41.665280, 14.009815)
+
     .Map.Center = MapPoint(41.8903, 12.49226)
 
     .Map.Zoom = 14
 
     .Map.Zoom = 14
 
   End With
 
   End With
Riga 34: Riga 34:
 
  <FONT Color=gray>' ''Mostra la latitudine e la longitudine del punto ove si è cliccato:''</font>
 
  <FONT Color=gray>' ''Mostra la latitudine e la longitudine del punto ove si è cliccato:''</font>
 
   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")
 
    
 
    
 
   If Not Mouse.Right Then Return  
 
   If Not Mouse.Right Then Return  

Versione delle 14:38, 1 mag 2021

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 di seguito un semplice esempio, nel quale 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
 
' 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")
 
 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)], Null]
 
 MapView1.Map.Center = MapPoint.GetCenter(mmpp[0])
 
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