Differenze tra le versioni di "Inserire un'immagine come marcatore di coordinate su una MapView"

Da Gambas-it.org - Wikipedia.
Riga 7: Riga 7:
 
  '''Public''' Sub _New()
 
  '''Public''' Sub _New()
 
    
 
    
   MapView1.Map.AddTile("GoogleMap", "https&#058;//khms{s}.google.it/kh/v={version}&src=app&x={x}&y={y}&z={z}&s=Galile", ["version": "934"]).SubDomains = ["0", "1", "2"]  <SUP><FONT Color=gray>'</font>&#091;[[#Note|Nota 1]]&#093;</sup>
+
   MapView1.Map.AddTile("GoogleMap", "https&#058;//khms{s}.google.it/kh/v={version}&src=app&x={x}&y={y}&z={z}&s=Galile", ["version": "944"]).SubDomains = ["0", "1", "2"]  <SUP><FONT Color=gray>'</font>&#091;[[#Note|Nota 1]]&#093;</sup>
 
    
 
    
 
  '''End'''
 
  '''End'''
Riga 114: Riga 114:
  
 
=Note=
 
=Note=
[1] Qualora la mappa non appaia, verificare la versione GoogleMap, ed eventualmente modificarla in questo punto del codice: ["version": "934"]
+
[1] Qualora la mappa non appaia, verificare la versione GoogleMap, ed eventualmente modificarla in questo punto del codice: ["version": "944"]
 
<BR>Al riguardo vedere: [[Conoscere_la_versione_più_recente_di_Google_Maps_satellite|Conoscere la versione più recente di Google Maps satellite]]
 
<BR>Al riguardo vedere: [[Conoscere_la_versione_più_recente_di_Google_Maps_satellite|Conoscere la versione più recente di Google Maps satellite]]
  
 
[2] Al riguardo vedere: [[Mostrare_sulla_MapView_disegni,_immagini_e_Controlli_senza_l'uso_del_Metodo_Map.AddShape()|Mostrare sulla MapView disegni, immagini e Controlli senza l'uso del Metodo Map.AddShape()]]
 
[2] Al riguardo vedere: [[Mostrare_sulla_MapView_disegni,_immagini_e_Controlli_senza_l'uso_del_Metodo_Map.AddShape()|Mostrare sulla MapView disegni, immagini e Controlli senza l'uso del Metodo Map.AddShape()]]

Versione delle 07:43, 30 mar 2023

Per inserire un'immagine come marcatore di coordinate su una MapView al posto della classica forma a goccia rossa, è necessario utilizzare il Metodo ".AddPoint()" del Metodo ".AddShape()" della Classe Map.

Mostriamo un semplice esempio, nel quale all'apertura del programma sarà inserito sulla mappa un marcatore di coordinate rappresentato dall'immagine prescelta. Successivamente il marcatore potrà essere inserito sul punto della mappa, ove si clicca con il mouse: [Nota 1]

Private im As Image
Private mp As New MapPoint

Public Sub _New()
 
 MapView1.Map.AddTile("GoogleMap", "https://khms{s}.google.it/kh/v={version}&src=app&x={x}&y={y}&z={z}&s=Galile", ["version": "944"]).SubDomains = ["0", "1", "2"]   '[Nota 1]
 
End


Public Sub Form_Open()
 
 im = Image.Load("/percorso/del/file/immagine")
 
' Imposta il centro della mappa specificandone preliminarmente le coordinate geografiche:
 mp.Lat = 41.8902142
 mp.Lon = 12.4900422
 With MapView1.Map
   .Center = mp
   .Zoom = 15
 End With
 
' Mostra l'immagine prescelta come marcatore delle coordinate:
 MapView1.Map.AddShape("immagine").AddPoint("immagine", mp, Color.Default, im)
 
End


Public Sub MapView1_MouseUp()
 
 Dim pt As New Point(Mouse.X, Mouse.Y)
  
 With MapView1
   mp = .Map.PixelToMapPointRel(pt)
   .Map.AddShape("immagine").AddPoint("immagine", mp, Color.Default, im)
   .Refresh()
   .Map.Refresh()
 End With
 
 Print mp.Lat, mp.Lon
 
End


Inserire un'immagine su una MapView nel punto ove si è cliccato con il mouse, usando l'Oggetto "Figlio" DrawingArea

L'Oggetto "MapView" mostra la mappa su una "DrawingArea". Tale DrawingArea è un Oggetto "Figlio" di un "Panel", "Figlio" diretto a sua volta dell'Oggetto "MapView".
Pertanto, sarà possibile utilizzare tale "DrawingArea" per disegnare qualsiasi cosa, facendola apparire al di sopra della mappa. [Nota 2]

Mostriamo un semplice codice, nel quale sarà mostrata un'immagine sulla mappa nel punto ove si è cliccato con il puntatore del mouse:

Private MapView1 As MapView
Private pn As Panel
Private im As Image
Private mmpp As New MapPoint[]


Public Sub Form_Open()

 Dim mp As New MapPoint

 mp.Lat = 41.89018
 mp.Lon = 12.49230

 With Me
   .W = Screen.AvailableWidth
   .H = Screen.AvailableHeight
   .Arrangement = Arrange.Fill
 End With
 With MapView1 = New MapView(Me) As "MapView1"
   .Map.AddTile("topo", "https://a.tile.opentopomap.org/{z}/{x}/{y}.png")
   .Map.Zoom = 15
   .Map.Center = mp
' Individua dapprima l'Oggetto "Figlio" della "MapView", che è un "Panel":
   pn = .Children[0]
 End With
 
 im = Image.Load("/percorso/del/file/immagine")
 
End

Public Sub MapView1_MouseUp()
 
 Dim pt As New Point(Mouse.X, Mouse.Y)
 
' Si usa l'Oggetto "MapPoint" per garantire la coerenza del puntamento su un punto della mappa anche nel caso di spostamento o variazione dello zoom della mappa medesima:
 mmpp.Push(MapView1.Map.PixelToMapPointRel(pt))
 
 Me.Caption = CStr(mmpp[mmpp.Max].Lat) & "  -  " & CStr(mmpp[mmpp.Max].Lon)
 
 MapView1.Refresh
 
End


Public Sub MapView1_Draw()
 
 Dim i As Integer
 
 With Paint
' Disegna sull'Oggetto "Figlio" del "Panel", che è una "DrawingArea", la stessa che la Classe "MapView" usa per mostrare la mappa:
   .Begin(pn.Children[0])
   For i = 0 to mmpp.Max
' (x / 2) e (y / 2) per centrare l'immagine nel punto dove si clicca con il mouse:
     .DrawImage(im, MapView1.Map.MapPointToPixelRel(mmpp[i]).X - (im.W / 2), MapView1.Map.MapPointToPixelRel(mmpp[i]).Y - (im.H / 2), im.W, im.H, 0.6, Null)
   Next
   .End
 End With
 
End


Note

[1] Qualora la mappa non appaia, verificare la versione GoogleMap, ed eventualmente modificarla in questo punto del codice: ["version": "944"]
Al riguardo vedere: Conoscere la versione più recente di Google Maps satellite

[2] Al riguardo vedere: Mostrare sulla MapView disegni, immagini e Controlli senza l'uso del Metodo Map.AddShape()