Differenze tra le versioni di "Utilizzare una DrawingArea con gb.map anziché una MapView"

Da Gambas-it.org - Wikipedia.
Riga 1: Riga 1:
 
Mostreremo di seguito un semplice codice esemplificativo, nel quale si farà uso di una ''DrawingArea'' anziché dell'oggetto ''MapView''.
 
Mostreremo di seguito un semplice codice esemplificativo, nel quale si farà uso di una ''DrawingArea'' anziché dell'oggetto ''MapView''.
  
Bisognerà porre sul ''Form'' una ''DrawingArea'', uno ''Slider'' e un ''LCDLabel'' per lo zoom, altresì attivare i Componenti ''gb.map'' e ''gb.qt5'' e ''gb.qt5.ext'' .
+
Bisognerà porre sul ''Form'' una ''DrawingArea'', uno ''Slider'', un ''LCDLabel'' per lo zoom e due ''RadioButton'' per scegliere il sistema di riferimento delle coordinate, altresì attivare i Componenti ''gb.map'' e ''gb.qt5'' e ''gb.qt5.ext'' .
 
  Private hMap As New Map     
 
  Private hMap As New Map     
 
  Private x As Integer
 
  Private x As Integer
Riga 36: Riga 36:
 
     .Font.Size = 18
 
     .Font.Size = 18
 
     .Font.Bold = True
 
     .Font.Bold = True
 +
  End With
 +
  With RadioButton1
 +
    .X = Me.W * 0.97
 +
    .Y = Me.H * 0.2
 +
    .W = Me.W * 0.04
 +
    .H = Me.H * 0.02
 +
    .Text = "sess."
 +
    .Value = True
 +
  End With
 +
  With RadioButton2
 +
    .X = Me.W * 0.97
 +
    .Y = RadioButton1.Y + RadioButton1.H
 +
    .W = Me.W * 0.04
 +
    .H = Me.H * 0.02
 +
    .Text = "decm."
 
   End With
 
   End With
 
    
 
    
Riga 60: Riga 75:
 
  '''Public''' Sub DrawingArea1_Draw()
 
  '''Public''' Sub DrawingArea1_Draw()
 
    
 
    
   Dim lat, lon As Float
+
   Dim lat, lon As String
 +
  Dim sla, slo As String
 
    
 
    
 
   With hMap
 
   With hMap
Riga 70: Riga 86:
 
   lat = hMap.PixelToMapPointRel(pt).Lat
 
   lat = hMap.PixelToMapPointRel(pt).Lat
 
   lon = hMap.PixelToMapPointRel(pt).Lon
 
   lon = hMap.PixelToMapPointRel(pt).Lon
+
  sla = CStr(lat)
 +
  slo = CStr(lon)
 +
 
 
   If coo Then
 
   If coo Then
 
     With Paint
 
     With Paint
Riga 77: Riga 95:
 
       .Ellipse(x - 1, y - 1, 4, 4)
 
       .Ellipse(x - 1, y - 1, 4, 4)
 
       .Font.Size = 8
 
       .Font.Size = 8
       .Text(" " & Geo.DecToSex(lat, 1) & "\n " & Geo.DecToSex(lon, 2), x, y, 120, 20)
+
       If RadioButton1.Value Then
 +
        sla = Geo.DecToSex(lat, 1)
 +
        slo = Geo.DecToSex(lon, 2)
 +
      Endif
 +
      .Text(" " & sla & "\n " & slo, x, y, 120, 20)
 
       .Fill
 
       .Fill
 
       .End
 
       .End

Versione delle 13:08, 11 ago 2018

Mostreremo di seguito un semplice codice esemplificativo, nel quale si farà uso di una DrawingArea anziché dell'oggetto MapView.

Bisognerà porre sul Form una DrawingArea, uno Slider, un LCDLabel per lo zoom e due RadioButton per scegliere il sistema di riferimento delle coordinate, altresì attivare i Componenti gb.map e gb.qt5 e gb.qt5.ext .

Private hMap As New Map    
Private x As Integer
Private y As Integer
Private mp As MapPoint
Private pt As New Point
Private coo As Boolean
 
 
Public Sub _New()    
 
 With hMap
   .AddTile("GoogleMaps", "https://khms{s}.google.it/kh/v={version}&src=app&x={x}&y={y}&z={z}&s=Galile", ["version": "800"]).SubDomains = ["0", "1", "2"]
   mp = MapPoint(34.976001513175, 13.3154296875)
   .Center = mp
 End With
 With Me  
   .W = Desktop.W
   .H = Desktop.H  
 End With
 With DrawingArea1  
   .X = Me.W * 0.007
   .Y = Me.H * 0.01
   .W = Me.W * 0.96
   .H = Me.H * 0.95
 End With
 With LCDLabel1
   .X = Me.W * 0.967
   .Y = Me.H * 0.04
   .W = Me.W * 0.02
   .H = Me.H * 0.02
   .Alignment = Align.Right
   .Foreground = Color.Red
   .Font.Size = 18
   .Font.Bold = True
 End With
 With RadioButton1
   .X = Me.W * 0.97
   .Y = Me.H * 0.2
   .W = Me.W * 0.04
   .H = Me.H * 0.02
   .Text = "sess."
   .Value = True
 End With
 With RadioButton2
   .X = Me.W * 0.97
   .Y = RadioButton1.Y + RadioButton1.H
   .W = Me.W * 0.04
   .H = Me.H * 0.02
   .Text = "decm."
 End With
 
End
 
 
Public Sub Form_Open()
 
 With Slider1
   .X = Me.W * 0.975
   .Y = Me.H * 0.07
   .Value = 6
   .MaxValue = 18
   .MinValue = 6
 End With    
 
 hMap.Zoom = Slider1.Value  
 
 DrawingArea1.Refresh()
  
End
 
 
Public Sub DrawingArea1_Draw()
 
 Dim lat, lon As String
 Dim sla, slo As String
 
 With hMap
   .Width = Paint.W
   .Height = Paint.H
   .Draw()
 End With
 
 lat = hMap.PixelToMapPointRel(pt).Lat
 lon = hMap.PixelToMapPointRel(pt).Lon
 sla = CStr(lat)
 slo = CStr(lon)
 
 If coo Then
   With Paint
     .Brush = Paint.Color(Color.Red)
     .Font.Size = 16
     .Ellipse(x - 1, y - 1, 4, 4)
     .Font.Size = 8
     If RadioButton1.Value Then
       sla = Geo.DecToSex(lat, 1)
       slo = Geo.DecToSex(lon, 2)
     Endif
     .Text(" " & sla & "\n " & slo, x, y, 120, 20)
     .Fill
     .End
   End With
 Endif
 
 DrawingArea1.Refresh()
 
End
 
 
Public Sub DrawingArea1_MouseMove()  
 
 Dim c As New Single[18]
 Dim mx, my As Short
 
 c = [0, 0, 0, 0, 0, 5, 6.4, 7.6, 8.8, 9.9, 10.9, 11.9, 12.94, 13.96, 14.98, 15.98, 16.99, 17.994]
 
 mx = (x - Mouse.X)
 my = (y - Mouse.Y)
 
 With hMap  
   .Center.Lat -= ((my ^ 0) * my) / ((Slider1.Value * 10) / (Slider1.Value - c[Slider1.Value - 1]))
   .Center.Lon += ((mx ^ 0) * mx) / ((Slider1.Value * 10) / (Slider1.Value - c[Slider1.Value - 1]))
 End With
 
 x = Mouse.X  
 y = Mouse.Y  
 
End
 
 
Public Sub DrawingArea1_MouseDown()  
 
 pt = pt(Mouse.X, Mouse.Y)
 x = Mouse.X  
 y = Mouse.Y  
 coo = False
  
End
 

Public Sub DrawingArea1_MouseUp()
 
 pt = pt(Mouse.X, Mouse.Y)
 mp = MapPoint(hMap.PixelToMapPointRel(pt).Lat, hMap.PixelToMapPointRel(pt).Lon)
 coo = True
  
End


Public Sub Slider1_Change()
  
 hMap.Zoom = Slider1.Value
 LCDLabel1.Value = Slider1.Value
 coo = False
 
End


Public Sub Form_Close()
 
 Quit
 
End