Autore Topic: [Risolto] Come disegnare cerchi su una mapview?  (Letto 4136 volte)

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.728
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re: Come disegnare cerchi su una mapview?
« Risposta #30 il: 30 Marzo 2015, 12:48:58 »
scusa, forse sono andato in tilt :rolleyes:
ma per acquisire le coordinate non devo usare una MapView?

Codice: gambas [Seleziona]
    Public Sub MapView1_MouseDown()     
     Dim po As New Point 
       po.X = Mouse.X 
       po.Y = Mouse.Y 
       With MapView1.Map.PixelToMapPointRel(po) 
         Print " "; .Lat, Null; .Lon 
       End With 
    End 
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Come disegnare cerchi su una mapview?
« Risposta #31 il: 30 Marzo 2015, 13:01:21 »
scusa, forse sono andato in tilt :rolleyes:
ma per acquisire le coordinate non devo usare una MapView?


...... :rolleyes: .... sì, perdonami, hai ragione.   ;D
« 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 vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Come disegnare cerchi su una mapview?
« Risposta #32 il: 30 Marzo 2015, 18:13:07 »
Nella DrawArea non riesco a "girare" il mondo ... o sbaglio?

Tu cerchi una cosa tipo questa ?      :-X

Codice: gambas [Seleziona]
Private hMap As New Map  
Private x As Short
Private y As Short
  
  
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 Me
    .W = 700
    .H = 650
    .Center
  End With

  With ValueBox1
    .X = Me.W - 64
    .Y = 30
  End With
  
  With Slider1    
    .X = Me.W - 60
    .Y = ValueBox1.Y + ValueBox1.H + 10
    .Value = 3  
    .MaxValue = 18
    .MinValue = 1
  End With  
  
  hMap.Zoom = Slider1.Value
  
  With DrawingArea1
    .W = 600
    .H = 600
  End With
  
  With hMap  
    .Center.Lat = 41
    .Center.Lon = 13
  End With
  
  DrawingArea1.Refresh()
  
End  
  
  
Public Sub DrawingArea1_Draw()    
    
  With hMap  
    .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


Public Sub DrawingArea1_MouseMove()

  With hMap
    .Center.Lat = .Center.Lat - ((y - Mouse.Y) / (10 ^ Round(Slider1.Value / 3.3)))
    .Center.Lon = .Center.Lon + ((x - Mouse.X) / (10 ^ Round(Slider1.Value / 3.3)))
  End With  

  x = Mouse.X
  y = Mouse.Y
 
  DrawingArea1.Refresh()  
  
End


Public Sub DrawingArea1_MouseDown()

  x = Mouse.X
  y = Mouse.Y
  
End


       :rolleyes:
« Ultima modifica: 01 Aprile 2015, 11:12: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: Come disegnare cerchi su una mapview?
« Risposta #33 il: 31 Marzo 2015, 12:09:50 »
 :)
mi rimane da capire come premendo un pulsante riesca a sovrapporre alla mappa il famigerato cerchio...
Mi metto al lavoro
 :ciao:
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline gianfry56

  • Gambero
  • **
  • Post: 78
    • Mostra profilo
Re:Come disegnare cerchi su una mapview?
« Risposta #34 il: 30 Ottobre 2016, 16:33:01 »
Salve a tutti  :),
mi permetto di riaprire questo vecchio post per chiedere se qualcuno è mai riuscito ad utilizzare il metodo AddPolyline di MapView.Map.
Non ho problemi con AddPoint e AddPolygon che funzionano perfettamente, ma AddPolyline non ne vuole sapere... e sì che dovrebbe utilizzare, come AddPolygon, un array di MapPoint  :rolleyes: dico 'dovrebbe' perché purtroppo la documentazione a riguardo manca (o io non l'ho trovata)

Ho la necessità di usare AddPolyline perché vorrei sovrapporre alla MapView una serie di punti, collegati, per generare un percorso.

Grazie in anticipo.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Come disegnare cerchi su una mapview?
« Risposta #35 il: 30 Ottobre 2016, 17:55:15 »
AddPolyline......dovrebbe utilizzare, come AddPolygon, un array di MapPoint 
Effettivamente il secondo parametro del Metodo AddPolyline( ) prevede una variabile vettoriale di tipo MapPoint[ ].
Ma poi a me il programma non lo accetta, come andasse in crash, e dà un errore: " Not an array " !    :-\

Ad ogni modo ho invato una richiesta di esempio/spiegazione nella Mailing List Internazionale.
Restiamo in attesa.
« Ultima modifica: 30 Ottobre 2016, 18:05:01 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 vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Come disegnare cerchi su una mapview?
« Risposta #36 il: 31 Ottobre 2016, 12:18:45 »
Dunque... ringrazio innanzitutto Gianluigi per aver re-inserito la mia richiesta di chiarimenti nella M.L. internazionale (dato che io ho problemi con il mio provider di posta elettronica).

Abbiamo avuto la risposta al riguardo da Fabien Bodard (l'autore del Componente gb.map), che può essere letta qui:

   https://www.mail-archive.com/gambas-user@lists.sourceforge.net/msg38016.html


Ho provato quel codice, e devo dire che, in vero, anche io - come ho detto nel precedente mio messaggio - avevo scritto un codice analogo, ma mi dava un errore "Not an array" in basso a destra dell'IDE (Stato dello stack).
Tale problema lo riscontro anche con il codice di Fabien Bodard.
Vi chiedo di provare anche voi il codice di Bodard che è il seguente:
Codice: [Seleziona]
Public Sub Form_Open()

  Dim hPolyLine As New MapPoint[]
 
  MapView1.Map.AddTile("GoogleMap", "https://khms{s}.google.fr/kh/v={version}&src=app&x={x}&y={y}&z={z}&s=Galile", ["version": "702"]).SubDomains = ["0", "1", "2"]
  MapView1.Map["GoogleMap"].Visible = True

  With MapView1.Map.AddShape("Poly")
    hPolyLine = [MapPoint(48.457454, -4.638139), MapPoint(51.123363, 2.217329), MapPoint(48.921609, 8.106001),
    MapPoint(43.833550, 7.666547), MapPoint(42.487303, 3.008345), MapPoint(43.324192, -1.825640)]
    .AddPolyLine("Section 1", hPolyLine)
  End With

End
Ditemi se riscontrate anche voi quel errore.
« Ultima modifica: 03 Gennaio 2021, 00:45:42 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 Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Come disegnare cerchi su una mapview?
« Risposta #37 il: 31 Ottobre 2016, 14:31:39 »
Confermo stesso errore anche qui.
Non è che devo aggiornare? Io sono fermo alla r7884
 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Come disegnare cerchi su una mapview?
« Risposta #38 il: 31 Ottobre 2016, 14:32:19 »
mi dava un errore "Not an array" in basso a destra dell'IDE (Stato dello stack).
Tale problema lo riscontro anche con il codice di Fabien Bodard.
Ho segnalato il problema direttamente a Fabien Bodard, e con la rev. 7950 via SVN l'errore è stato eliminato.
Ora il metodo .AddPolyLine( ) funziona regolarmente.
« 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 Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Come disegnare cerchi su una mapview?
« Risposta #39 il: 31 Ottobre 2016, 15:18:36 »
mi dava un errore "Not an array" in basso a destra dell'IDE (Stato dello stack).
Tale problema lo riscontro anche con il codice di Fabien Bodard.
Ho segnalato il problema direttamente a Fabien Bodard, e con la rev. 7950 via SVN l'errore è stato eliminato.
Ora il metodo .AddPolyLine( ) funziona regolarmente.

Si funziona, a spanne ma funziona  ;D
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.728
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:Come disegnare cerchi su una mapview?
« Risposta #40 il: 01 Novembre 2016, 18:46:42 »
 :ciao:
io rimango ancora senza i "miei" cerchi :'(
Per la cronaca (si fa per dire), qualche mese fa ho chiesto a Fabien se pensava di integrare questa possibilità.
Mi ha riposto che la richiesta era interessante ma che era necessario capire come realizzarla!
Gli avevo spiegato che il centro doveva essere identificato con coordinate geografiche mentre il raggio con una lunghezza espressa, ad esempio, in metri.
Ha risposto ok si vedrà! :-\
Speriamo trovi il tempo di accontentarmi :)
 :ciao:
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline gianfry56

  • Gambero
  • **
  • Post: 78
    • Mostra profilo
Re:Come disegnare cerchi su una mapview?
« Risposta #41 il: 01 Novembre 2016, 21:00:26 »
Grazie a tutti per l'interessamento, sembra che questo codice sia stato corretto...
Ho trovato nella pagina https://sourceforge.net/p/gambas/code/7950/ le modifiche da fare alla classe _MapShape.class ma, perdonate la mia ignoranza, è sufficiente trovare il file che contiene questa classe e correggerlo?
Se sì, qualcuno gentilmente può dirmi sotto quale cartella posso trovare il file in questione?
 :ciao:

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Come disegnare cerchi su una mapview?
« Risposta #42 il: 01 Novembre 2016, 22:28:46 »
Se sì, qualcuno ....
Tu... come effettui gli aggiornamenti di Gambas ?
« 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 gianfry56

  • Gambero
  • **
  • Post: 78
    • Mostra profilo
Re:Come disegnare cerchi su una mapview?
« Risposta #43 il: 02 Novembre 2016, 00:09:46 »
Normalmente tramite Muon, il gestore aggiornamenti di Kubuntu..., ovviamente quando li rendono disponibili;
però se potessi imparare un modo di aggiornarmi più spesso, tutto di guadagnato.

grazie comunque  :)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Come disegnare cerchi su una mapview?
« Risposta #44 il: 02 Novembre 2016, 01:32:49 »
.... ma che era necessario capire come realizzarla!


....innanzitutto implementando un metodo del tipo:
.AddShape(".....").AddPolyPoint("....", polypoint As Point[ ])
ed aggiungendo un po' di matematica, come nel seguente esempio, ove ad oggi è possibile usare solo il metodo .AddPolyLine( ):

Codice: [Seleziona]
Public Sub Form_Open()

  Dim x_a, y_o, r, an As Short
  Dim po As New Point
  Dim mp As New MapPoint
  Dim mmpp As New MapPoint[]
   
    MapView1.Map.AddTile("GoogleMap", "https://khms{s}.google.it/kh/v={version}&src=app&x={x}&y={y}&z={z}&s=Galile", ["version": "702"]).SubDomains = ["0", "1", "2"]
    MapView1.Map["GoogleMap"].Visible = True
   
' Imposta il centro del cerchio: '
    mp.Lat = 41.8902142
    mp.Lon = 12.4900422
   
    po = MapView1.Map.MapPointToPixelRel(mp)
   
    x_a = po.X   ' Rappresenta la distanza X dal punto 0 (angolo in alto a sinistra)'
    y_o = po.y   ' Rappresenta la distanza Y dal punto 0 (angolo in alto a sinistra)'
    r = 11       ' Rappresenta la dimensione del raggio del cerchio

' Descrive il cerchio:
    For an = 0 To 360               ' Rappresenta l'angolo della circonferenza
      po.X = x_a + r * Cos(Rad(an))
      po.Y = y_o + r * Sin(Rad(an))
      mp = MapView1.Map.PixelToMapPointRel(po)
      mmpp.Push(mp)
      MapView1.Map.AddShape("italia").AddPolyLine("italia", mmpp)
    Next

End
« 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. »