Autore Topic: Map.Zoom sembra non funzionare  (Letto 449 volte)

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.728
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Map.Zoom sembra non funzionare
« il: 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!
 :-\
« Ultima modifica: 27 Marzo 2015, 10:28:31 da kicco »
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Map.Zoom sembra non funzionare
« Risposta #1 il: 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
« Ultima modifica: 25 Marzo 2015, 21:48:09 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.728
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re: Map.Zoom sembra non funzionare
« Risposta #2 il: 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:
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Map.Zoom sembra non funzionare
« Risposta #3 il: 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
« Ultima modifica: 27 Marzo 2015, 11:26:09 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.728
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re: Map.Zoom sembra non funzionare
« Risposta #4 il: 27 Marzo 2015, 14:11:14 »
 :ok:
grazie!
Quindi lo zoom deve essere impostato prima del operazioni di Draw.
« Ultima modifica: 27 Marzo 2015, 14:44:28 da kicco »
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)