Gambas-it

Gambas3 => Programmazione => Topic aperto da: kicco - 25 Marzo 2015, 16:18:30

Titolo: Map.Zoom sembra non funzionare
Inserito da: kicco - 25 Marzo 2015, 16:18:30
 :ciao:
Codice: gambas [Seleziona]

' Gambas class file

    Private hMap As New Map
      
Public Sub _New()
    With hMap.AddTile("OpenStreet", "http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png")
      .Copyright = "OpenStreetMap contributors"
    End With
End

Public Sub DrawingArea1_Draw()
    hMap.Center.Lat = 45
    hMap.Center.Lon = 9
   'hMap.Zoom = 10
    hMap.Width = Draw.Width
    hMap.Height = Draw.Height
    hMap.Draw()
    DrawingArea1.Refresh()
End


Se hMap.Zoom è commentato la cartina è centrata nel punto voluto ovviamente senza Zoom, se tolgo il commento la cartina non viene disegnata!
 :-\
Titolo: Re: Map.Zoom sembra non funzionare
Inserito da: vuott - 25 Marzo 2015, 21:45:00
......poniamo sul Form anche uno Slider ed un ValueBox1 per variare lo zoom e visualizzare il valore:


Codice: gambas [Seleziona]
Private hMap As New Map 

  
Public Sub _new()    
  
hMap.AddTile("OpenStreet", "http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png")    
hMap!OpenStreet.Copyright = "© OpenStreetMap contributors"    
  
hMap.AddShape("MyShape")    
  
hMap!MyShape.AddPoint("alibaba", MapPoint(45.678, 9.120))    
  
hMap.Center = hMap!MyShape!alibaba.Points    
  
hMap.Zoom = 12

hMap.Refresh    
  
End    
  

Public Sub Form_Open()

   With Slider1
     .Value = 12
     .MaxValue = 20
     .MinValue = 1
   End With

End  
  
Public Sub DrawingArea1_Draw()      
        
   hMap.Width = Draw.Width      
   hMap.Height = Draw.Height      
   hMap.Draw()    
      
   DrawingArea1.Refresh()    
        
End


Public Sub Slider1_Change()

  hMap.Zoom = Slider1.Value
  ValueBox1.Value = Slider1.Value
  hMap.Refresh

End
Titolo: Re: Map.Zoom sembra non funzionare
Inserito da: kicco - 27 Marzo 2015, 10:28:09
Grazie Vuott,
ho visto che così funziona, ma ti chiedo: - la mia soluzione perchè non funziona? -
Sto caricando la mappa in una MapView e poi la copio in una DrawArea. Per farlo devo tenere conto delle coordinate del centro mappa visualizzate nella MapView e del fattore di zoom.
Quando "copio" la mappa nella DrawArea, la cartina si centra correttamente sulle coordinate ma non mi accetta il fattore di Zoom. Risultato mappa centrata ma vista globale!
 :ciao:
Titolo: Re: Map.Zoom sembra non funzionare
Inserito da: vuott - 27 Marzo 2015, 11:22:10
... la mia soluzione perchè non funziona? -


Perché hai posto la proprietà dello zoom all'interno della sub-procedura di disegno della DrawingArea.

Il tuo codice, molto più semplice e breve del mio, così funziona:
Codice: gambas [Seleziona]
Private hMap As New Map


Public Sub _New()

   With hMap.AddTile("OpenStreet", "http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png")  
     .Copyright = "OpenStreetMap contributors"  
   End With
  
End


Public Sub Form_Open()

  With Slider1  
     .Value = 12  
     .MaxValue = 20  
     .MinValue = 1  
  End With

  hMap.Zoom = 12

End


Public Sub DrawingArea1_Draw()  
  
  With hMap
    .Center.Lat = 45  
    .Center.Lon = 9  
    .Width = Draw.Width  
    .Height = Draw.Height  
    .Draw()
  End With
  
  DrawingArea1.Refresh()

End


Public Sub Slider1_Change()  
  
  hMap.Zoom = Slider1.Value  
  ValueBox1.Value = Slider1.Value  
  hMap.Refresh  
  
End
Titolo: Re: Map.Zoom sembra non funzionare
Inserito da: kicco - 27 Marzo 2015, 14:11:14
 :ok:
grazie!
Quindi lo zoom deve essere impostato prima del operazioni di Draw.