Differenze tra le versioni di "Ottenere un'Image dalla mappa mostrata da una MapView"

Da Gambas-it.org - Wikipedia.
 
(14 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Per ottenere un oggetto <I>Image</i>, e da questo quindi un file immagine, della mappa corrente mostrata da una ''MapView'', è necessario utilizzare il Metodo "''.Grab()''" della proprietà "''.Map''" della Classe ''MapView''.
+
Per ottenere un oggetto <I>Image</i>, e da questo quindi un file immagine, della mappa corrente mostrata da una ''MapView'', è possibile adottare due modalità.
  
Di seguito mostriamo un semplice esempio: <SUP>&#091;[[#Note|Nota 1]]&#093;</sup>
+
===Uso del Metodo MapView.Map.Draw()===
  Private mp As New MapPoint
+
Mostriamo un esempio pratico:
 +
  Private MapView1 As MapView
 
   
 
   
 
   
 
   
 
  '''Public''' Sub Form_Open()
 
  '''Public''' Sub Form_Open()
 
+
  MapView1.Map.AddTile("GoogleMap", "https&#058;//khms{s}.google.it/kh/v={version}&src=app&x={x}&y={y}&z={z}&s=Galile", ["version": "860"]).SubDomains = ["0", "1", "2"]
+
   Dim mp As New MapPoint
   MapView1.Map.Zoom = 16
+
 
+
  <FONT Color=gray>' ''Specifica le coordinate geografiche del centro della mappa alla sua apertura iniziale:''</font>
  <FONT Color=gray>' ''Imposta il centro del cerchio specificandone preliminarmente le coordinate geografiche:''</font>
 
 
   mp.Lat = 41.8902142
 
   mp.Lat = 41.8902142
 
   mp.Lon = 12.4900422
 
   mp.Lon = 12.4900422
   MapView1.Map.Center = mp
+
 
+
  With Me
 +
    .W = Screen.AvailableWidth
 +
    .H = Screen.AvailableHeight
 +
    .Arrangement = Arrange.Fill
 +
  End With
 +
   With MapView1 = New MapView(Me) As "MapView1"
 +
<FONT Color=gray>' ''Imposta un "Raster Tiles Server" remoto:''</font>
 +
    .Map.AddTile("opentopo", "https&#058;//a.tile.opentopomap.org/{z}/{x}/{y}.png")
 +
    .Map.Zoom = 16
 +
<FONT Color=gray>' ''Imposta il centro della mappa visualizzata all'inizio:''</font>
 +
    .Map.Center = mp
 +
  End With
 +
 
  '''End'''
 
  '''End'''
 
   
 
   
 +
'''Public''' Sub MapView1_MouseUp()
 
   
 
   
  '''Public''' Sub Button1_Click()
+
  <FONT Color=gray>' ''Se si clicca con il tasto destro del mouse sulla mappa, si avvia la creazione dell'immagine della "MapView":''</font>
 +
  If Not Mouse.Right Then Return
 +
   
 +
  Dim im As New Image(MapView1.W, MapView1.H, Color.White, Image.Standard)
 
    
 
    
   Dim im As New Image(MapView1.W, MapView1.H, Color.White, gb.Standard)
+
   With Paint
 
+
    .Begin(im)
<FONT Color=gray>' ''Carica nell'oggetto "Image" i dati dell'immagine della mappa mostrata dalla "MapView":''</font>
+
    <FONT Color=#B22222>MapView1.Map.Draw()</font>
  With MapView1
+
    .End
    im = .Map.<FONT Color=#B22222>Grab</font>(.Map.GetTile("GoogleMap").MaxBounds(mp, mp), .W, .H, 0, .Map.Zoom)
 
 
   End With
 
   End With
 
    
 
    
Riga 30: Riga 45:
 
    
 
    
 
  '''End'''
 
  '''End'''
 +
Se si desidera che il file immagine venga creato automaticamente ad ogni rinnovo del disegno della mappa, allora <SPAN Style="text-decoration:underline">si utilizzerà l'Evento "_Draw()"</span> della Classe ''MapView'' al posto dell'Evento "Button1_Click()".
  
  
 
+
===Uso del Metodo MapView.Map.Grab()===
 
+
Di seguito mostriamo un semplice esempio:
=Note=
+
Private MapView1 As MapView
[1] Qualora la mappa non appaia, verificare la versione GoogleMap, ed eventualmente modificarla in questo punto: ["version": "860"]
+
<BR>Al riguardo vedere: https://www.gisenglish.com/2018/06/download-sas-planet-nightly-all.html
+
 +
'''Public''' Sub Form_Open()
 +
 +
  Dim mp As New MapPoint
 +
 +
<FONT Color=gray>' ''Specifica le coordinate geografiche del centro della mappa alla sua apertura iniziale:''</font>
 +
  mp.Lat = 41.8902142
 +
  mp.Lon = 12.4900422
 +
 +
  With Me
 +
    .W = Screen.AvailableWidth
 +
    .H = Screen.AvailableHeight
 +
    .Arrangement = Arrange.Fill
 +
  End With
 +
  With MapView1 = New MapView(Me) As "MapView1"
 +
<FONT Color=gray>' ''Imposta un "Raster Tiles Server" remoto:''</font>
 +
    .Map.AddTile("opentopo", "https&#058;//a.tile.opentopomap.org/{z}/{x}/{y}.png")
 +
    .Map.Zoom = 16
 +
<FONT Color=gray>' ''Imposta il centro della mappa visualizzata all'inizio:''</font>
 +
    .Map.Center = mp
 +
  End With
 +
 +
'''End'''
 +
 +
'''Public''' Sub MapView1_MouseUp()
 +
 +
<FONT Color=gray>' ''Se si clicca con il tasto destro del mouse sulla mappa, si avvia la creazione dell'immagine della "MapView":''</font>
 +
  If Not Mouse.Right Then Return
 +
 +
  Dim im As New Image(MapView1.W, MapView1.H, Color.White, Image.Standard)
 +
 +
<FONT Color=gray>' ''Carica nell'oggetto "Image" i dati dell'immagine della mappa mostrata dalla "MapView":''</font>
 +
  With MapView1
 +
    im = .Map.<FONT Color=#B22222>Grab</font>(.Map.GetTile("opentopo").MaxBounds(.Map.Center, .Map.Center), .W, .H, 0, .Map.Zoom)
 +
  End With
 +
 +
  im.Save("/tmp/prova.png", 100)
 +
 +
'''End'''

Versione attuale delle 17:19, 20 mag 2023

Per ottenere un oggetto Image, e da questo quindi un file immagine, della mappa corrente mostrata da una MapView, è possibile adottare due modalità.

Uso del Metodo MapView.Map.Draw()

Mostriamo un esempio pratico:

Private MapView1 As MapView


Public Sub Form_Open()

 Dim mp As New MapPoint

' Specifica le coordinate geografiche del centro della mappa alla sua apertura iniziale:
 mp.Lat = 41.8902142
 mp.Lon = 12.4900422

 With Me
   .W = Screen.AvailableWidth
   .H = Screen.AvailableHeight
   .Arrangement = Arrange.Fill
 End With
 With MapView1 = New MapView(Me) As "MapView1"
' Imposta un "Raster Tiles Server" remoto:
   .Map.AddTile("opentopo", "https://a.tile.opentopomap.org/{z}/{x}/{y}.png")
   .Map.Zoom = 16
' Imposta il centro della mappa visualizzata all'inizio:
   .Map.Center = mp
 End With

End

Public Sub MapView1_MouseUp()

' Se si clicca con il tasto destro del mouse sulla mappa, si avvia la creazione dell'immagine della "MapView":
 If Not Mouse.Right Then Return
   
 Dim im As New Image(MapView1.W, MapView1.H, Color.White, Image.Standard)
 
 With Paint
   .Begin(im)
   MapView1.Map.Draw()
   .End
 End With
 
 im.Save("/tmp/prova.png", 100)
  
End

Se si desidera che il file immagine venga creato automaticamente ad ogni rinnovo del disegno della mappa, allora si utilizzerà l'Evento "_Draw()" della Classe MapView al posto dell'Evento "Button1_Click()".


Uso del Metodo MapView.Map.Grab()

Di seguito mostriamo un semplice esempio:

Private MapView1 As MapView


Public Sub Form_Open()

 Dim mp As New MapPoint

' Specifica le coordinate geografiche del centro della mappa alla sua apertura iniziale:
 mp.Lat = 41.8902142
 mp.Lon = 12.4900422

 With Me
   .W = Screen.AvailableWidth
   .H = Screen.AvailableHeight
   .Arrangement = Arrange.Fill
 End With
 With MapView1 = New MapView(Me) As "MapView1"
' Imposta un "Raster Tiles Server" remoto:
   .Map.AddTile("opentopo", "https://a.tile.opentopomap.org/{z}/{x}/{y}.png")
   .Map.Zoom = 16
' Imposta il centro della mappa visualizzata all'inizio:
   .Map.Center = mp
 End With

End

Public Sub MapView1_MouseUp()

' Se si clicca con il tasto destro del mouse sulla mappa, si avvia la creazione dell'immagine della "MapView":
 If Not Mouse.Right Then Return

 Dim im As New Image(MapView1.W, MapView1.H, Color.White, Image.Standard)

' Carica nell'oggetto "Image" i dati dell'immagine della mappa mostrata dalla "MapView":
 With MapView1
   im = .Map.Grab(.Map.GetTile("opentopo").MaxBounds(.Map.Center, .Map.Center), .W, .H, 0, .Map.Zoom)
 End With

 im.Save("/tmp/prova.png", 100)

End