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

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.307
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Come disegnare cerchi su una mapview?
« Risposta #15 il: 13 Marzo 2015, 11:23:56 »
Ancora usando openstreetmap, ecco il codice essenziale per far apparire un popup in un dato posto.
Ci si serve di risorse create da Leaflet.
E' necessario - come descritto sopra - utilizzare un foglio autonomo html da richiamare nella Classe principale di Gambas.

Codice: [Seleziona]
<!DOCTYPE html>
<html>
<head>

  <title>Crea un pop-up sulla mappa</title>

  <meta charset="utf-8" />


  <!-- Leaflet -->
  <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.css" />
  <script src="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script>
  

  <script>

    MB_URL = 'http://{s}.tiles.mapbox.com/v3/{id}/{z}/{x}/{y}.png';

    OSM_ATTRIB = '&copy; <a href="http://openstreetmap.org/copyright">OpenStreetMap</a> contributors';
  </script>
</head>
<body>
  
<div id="map" class="map" style="height: 300px"></div>

<pre><code>// crea una mappa nel div "map", imposta la visuale a un dato luogo e zoom
var map = L.map('map').setView([51.505, -0.09], 13);

// aggiunge OpenStreetMap tile layer
L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
  attribution: '&amp;copy; &lt;a href="http://osm.org/copyright"&gt;OpenStreetMap&lt;/a&gt; contributors'
}).addTo(map);

// aggiunge un marker in una data posizione, inserisce del contenuto al popup ed apre il popup
L.marker([51.5, -0.09]).addTo(map)
  .bindPopup('Questo è un popup CSS3. &lt;br&gt; Facilmente adattabile.')
  .openPopup();
</code></pre>


<script>
  var osmUrl = 'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
    osmAttrib = '&copy; <a href="http://openstreetmap.org/copyright">OpenStreetMap</a> contributors',
    osm = L.tileLayer(osmUrl, {maxZoom: 20, attribution: osmAttrib});

  var map = L.map('map').setView([1, 1], 16).addLayer(osm);

  L.marker([42.225, 15.747])
    .addTo(map)
    .bindPopup('Questo è un popup CSS3.<br />Facilmente adattabile.')
    .openPopup();
</script>

</body>
</html>
« 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.307
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Come disegnare cerchi su una mapview?
« Risposta #16 il: 13 Marzo 2015, 13:27:17 »
Ho guardato un po' in giro e ho trovato anche questo:


Dunque, sulla base del codice da te trovato e di quello esemplificativo della guida on line, sono riuscito a mostrare la mappa su una DrawingArea.
Ho effettuato qualche modifica e qualche aggiunta tenendo conto delle risorse della Classe Map.

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("cognac", MapPoint(45.678, 9.120))  
  
hMap.Center = hMap!MyShape!cognac.Points  
  
hMap.Zoom = 12  

' Crea un poligono (in questo caso un quadrilatero)
hMap!MyShape.AddPolygon("FARO", [[MapPoint(45.687, 9.13), MapPoint(45.671, 9.13), MapPoint(45.671, 9.11), MapPoint(45.687, 9.11)]])

' Aggiungendo 4 metodi "MapPoint", si crea ovviamente un ottagono:
'' hMap!MyShape.AddPolygon("FARO", [[MapPoint(45.687, 9.11), MapPoint(45.690, 9.120), MapPoint(45.687, 9.13), MapPoint(45.678, 9.134), MapPoint(45.671, 9.13), MapPoint(45.668, 9.120), MapPoint(45.671, 9.11), MapPoint(45.678, 9.106)]])

' Aggiunge un'immagine:
hMap!MyShape.Image = Image.Load("/usr/share/icons/hicolor/32x32/apps/vlc.png")

' Colora il poligono
hMap!MyShape.Color = &0090FF
  
hMap.Refresh  
  
End  
  
Public Sub Form_Open()  
  
End

Public Sub DrawingArea1_Draw()    
      
    hMap.Width = Draw.Width    
    hMap.Height = Draw.Height    
    hMap.Draw()  
      
    DrawingArea1.Refresh()  
      
End
« Ultima modifica: 13 Marzo 2015, 14:39:24 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.703
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re: Come disegnare cerchi su una mapview?
« Risposta #17 il: 13 Marzo 2015, 14:29:06 »
L'HTML lo provo con calma, invece l'esempio qua sopra, l'ho provato ma non mi funziona!
Cioè: vedo l'area rettangolare che hai disegnato e anche l'icona, ma non mi carica le mappe.
Mi sto scervellando per capire come mai non riesce a trasferire le mappe nella DrawingArea!
Io ho attivato gb.map solamente perchè credo che non serva altro giusto?
Se la stessa operazione la faccio nella MapView anzichè in Map allora funziona!
 :rolleyes:
 :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.307
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Come disegnare cerchi su una mapview?
« Risposta #18 il: 13 Marzo 2015, 14:37:02 »
Quello che meno capisco del programma sopra, quello che hai citato
Citazione
MapView1.Map!MyShape.AddPolygon("FARO", [[MapPoint(45.689, 9.14), MapPoint(45.671, 9.12), MapPoint(45.690, 9.11)]])
è l'uso del ! punto esclamativo...


Hai già posto questa domanda su altra questione, e ti fu risposto da Pigavbg:
http://www.gambas-it.org/smf/index.php?topic=2614.0

C'è un riferimento anche qui:
http://www.gambas-it.org/smf/index.php?topic=1600.msg18408#msg18408
« 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.307
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Come disegnare cerchi su una mapview?
« Risposta #19 il: 13 Marzo 2015, 14:46:28 »
non riesce a trasferire le mappe nella DrawingArea!


Devi impostare i componenti grafici gb.qt4 e gb.qt4.ext, oppure  gb.gtk3  !
« Ultima modifica: 13 Marzo 2015, 14:48:03 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.703
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re: Come disegnare cerchi su una mapview?
« Risposta #20 il: 13 Marzo 2015, 17:46:43 »
 :ciao:
scusa, in effetti avevo poi guardato quei post che hai citato e ho anche capito :)

Citazione
Devi impostare i componenti grafici gb.qt4 e gb.qt4.ext, oppure  gb.gtk3  !
Ok effettivamente adesso funziona, avevo attivato gb.gui!
 :ok:
... ma con gb.gui, non dovrebbe impiegare gtk o qt a seconda del tipo di desktop environment impiegato dalla distribuzione?
« Ultima modifica: 13 Marzo 2015, 17:52:29 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.307
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Come disegnare cerchi su una mapview?
« Risposta #21 il: 13 Marzo 2015, 20:39:47 »
Se dunque ora vuoi disegnare un cerchio colorato di rosso semitrasparente sulla DrawingArea, puoi fare così:
Codice: gambas [Seleziona]
Public Sub DrawingArea1_Draw()      
            
   hMap.Width = Draw.Width      
   hMap.Height = Draw.Height      
   hMap.Draw()    
          
   DrawingArea1.Refresh()    
      
   With Paint
     .Begin(DrawingArea1)
     .Brush = Paint.Color(&AAFF0000)
     .Ellipse(100, 200, 100, 100)
     .Fill
     .End
   End With

End






... ma con gb.gui, non dovrebbe impiegare gtk o qt a seconda del tipo di desktop environment impiegato dalla distribuzione?
Forse a te viene impostata la libreria gtk.    :-\

« 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.703
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re: Come disegnare cerchi su una mapview?
« Risposta #22 il: 30 Marzo 2015, 10:53:44 »
 :ciao:
Alla fine della fiera ho deciso di visualizzare la mappa di OpenStreetMap su una Mapview usando gli strumenti a disposizione e una volta individuata l'area copiarla in una DrawArea per poter sfruttare .Draw e .Paint.
La copia funziona ok se pongo DrawArea.cache =false
Per generare i cerchi ho impiegato due pulsanti, ma per disegnare i cerchi devo porre DrawArea.cache = true ma a questo punto la mappa scompare e appare il cerchio...

Allego il "giochino"
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.307
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Come disegnare cerchi su una mapview?
« Risposta #23 il: 30 Marzo 2015, 11:02:46 »
Alla fine della fiera ho deciso di visualizzare la mappa di OpenStreetMap su una Mapview


Perché non hai seguito quest'altra soluzione che non utilizza l'oggetto MapView, ma solo la DrawingArea ?
http://www.gambas-it.org/smf/index.php?topic=3976.msg35304#msg35304
« 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.703
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re: Come disegnare cerchi su una mapview?
« Risposta #24 il: 30 Marzo 2015, 11:30:38 »
Citazione
Perché non hai seguito quest'altra soluzione che non utilizza l'oggetto MapView, ma solo la DrawingArea ?
così non posso navigare nella cartina, dovrei gestire io le coordinate.
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.307
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Come disegnare cerchi su una mapview?
« Risposta #25 il: 30 Marzo 2015, 11:36:43 »
dovrei gestire io le coordinate.

..gestire in che senso ? Come ?
« 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.703
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re: Come disegnare cerchi su una mapview?
« Risposta #26 il: 30 Marzo 2015, 11:43:23 »
Se uso MapView, ho disponibili come strumenti sia lo slicer per lo zoom (o la rotelle del mouse) e il pan della mappa, quindi posso "girare" il mondo. Nella DrawArea non riesco a "girare" il mondo ... o sbaglio?
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.307
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Come disegnare cerchi su una mapview?
« Risposta #27 il: 30 Marzo 2015, 11:59:12 »
Se uso MapView, ho disponibili come strumenti sia lo slicer per lo zoom.....

...ed allora questo ?    :-\

http://www.gambas-it.org/smf/index.php?topic=3976.msg35304#msg35304
« 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.703
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re: Come disegnare cerchi su una mapview?
« Risposta #28 il: 30 Marzo 2015, 12:15:39 »
Hai ragione, ma devo conoscere le coordinate a priori!
Per questo l'idea era di navigare e poi copiare nella DrawArea... e funziona, ma come dicevo solo se DrawArea.cached= FALSE
 :hard:
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.307
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Come disegnare cerchi su una mapview?
« Risposta #29 il: 30 Marzo 2015, 12:17:31 »
Hai ragione, ma devo conoscere le coordinate a priori!


Già lo sapevo che lo avresti scritto !   :hard:


http://www.gambas-it.org/smf/index.php?topic=3960.msg35231#msg35231
« 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. »