Differenze tra le versioni di "Disegnare un cerchio o un punto su una MapView"

Da Gambas-it.org - Wikipedia.
 
(23 versioni intermedie di uno stesso utente non sono mostrate)
Riga 2: Riga 2:
 
===Disegnare un Punto===
 
===Disegnare un Punto===
 
Per disegnare su una ''MapView'' un punto con il Metodo ".AddShape().AddCircle()" della Classe "Map", è necessario assegnare un piccolo valore al terzo argomento del predetto Metodo e assegnare un colore al settimo argomento, affinché l'elemento geometrico appaia come un "punto" (un piccolo cerchio pieno) e non come un cerchio vuoto.
 
Per disegnare su una ''MapView'' un punto con il Metodo ".AddShape().AddCircle()" della Classe "Map", è necessario assegnare un piccolo valore al terzo argomento del predetto Metodo e assegnare un colore al settimo argomento, affinché l'elemento geometrico appaia come un "punto" (un piccolo cerchio pieno) e non come un cerchio vuoto.
  '''Public''' Sub Form_Open()
+
  Public Sub Form_Open()
 
    
 
    
 
   Dim mp As New MapPoint(41.89018, 12.49230)
 
   Dim mp As New MapPoint(41.89018, 12.49230)
Riga 15: Riga 15:
 
   End With  
 
   End With  
 
      
 
      
  '''End'''
+
  End
 
Il terzo argomento stabilisce la dimensione in pixel del punto.
 
Il terzo argomento stabilisce la dimensione in pixel del punto.
 
Il quarto argomento assegna il colore alla circonferenza, mentre il settimo riempie il punto con il colore ivi impostato.
 
Il quarto argomento assegna il colore alla circonferenza, mentre il settimo riempie il punto con il colore ivi impostato.
Riga 23: Riga 23:
 
Per disegnare su una ''MapView'' un cerchio mediante il Metodo , è possibile utilizzare il Metodo ''.AddCircle( )'' del Metodo ".AddShape( )" della Classe "Map".
 
Per disegnare su una ''MapView'' un cerchio mediante il Metodo , è possibile utilizzare il Metodo ''.AddCircle( )'' del Metodo ".AddShape( )" della Classe "Map".
 
<BR>E' sufficiente assegnare un adeguato valore al terzo argomento e il valore della trasparenza al settimo argomento, se si vuole ottenere un cerchio vuoto, altrimenti un colore opaco se si vuole ottenere un cerchio pieno. Per variare lo spessore della circonferenza bisogna operare sul quinto argomento.
 
<BR>E' sufficiente assegnare un adeguato valore al terzo argomento e il valore della trasparenza al settimo argomento, se si vuole ottenere un cerchio vuoto, altrimenti un colore opaco se si vuole ottenere un cerchio pieno. Per variare lo spessore della circonferenza bisogna operare sul quinto argomento.
  '''Public''' Sub Form_Open()
+
  Public Sub Form_Open()
 
    
 
    
   Dim mp As New MapPoint(41.89018, 12.49230)
+
   Dim mp As New MapPoint(41.89035, 12.49237)
 
      
 
      
 
   With MapView1.Map
 
   With MapView1.Map
Riga 36: Riga 36:
 
   End With  
 
   End With  
 
      
 
      
  '''End'''
+
  End
 
Se si vuole, ad esempio, creare un cerchio riempito di un colore e con la circonferenza disegnata da altro colore:
 
Se si vuole, ad esempio, creare un cerchio riempito di un colore e con la circonferenza disegnata da altro colore:
 
  MapView1.Map.AddShape("cerchio").AddCircle("cerchio", mp, 100, <FONT Color=#B22222>Color.Red</font>, 2, 1, <FONT Color=#B22222>Color.Yellow</font>)
 
  MapView1.Map.AddShape("cerchio").AddCircle("cerchio", mp, 100, <FONT Color=#B22222>Color.Red</font>, 2, 1, <FONT Color=#B22222>Color.Yellow</font>)
Riga 43: Riga 43:
 
===Disegnare più punti===
 
===Disegnare più punti===
 
Mostriamo un esempio pratico per disegnare più punti lungo un'ideale circonferenza:
 
Mostriamo un esempio pratico per disegnare più punti lungo un'ideale circonferenza:
  '''Public''' Sub Form_Open()
+
  Public Sub Form_Open()
 
    
 
    
 
   Dim x_a, y_o, r, an As Short
 
   Dim x_a, y_o, r, an As Short
Riga 50: Riga 50:
 
    
 
    
 
   With MapView1
 
   With MapView1
     .Map.AddTile("GoogleMap", "https&#058;//khms{s}.google.it/kh/v={version}&src=app&x={x}&y={y}&z={z}&s=Galile", ["version": "908"]).SubDomains = ["0", "1", "2"]  <SUP><FONT Color=gray>'</font>&#091;[[#Note|Nota 1]]&#093;</sup>
+
     .Map.AddTile("GoogleMap", "https&#058;//khms{s}.google.it/kh/v={version}&src=app&x={x}&y={y}&z={z}&s=Galile", ["version": "979"]).SubDomains = ["0", "1", "2"]  <SUP><FONT Color=gray>'</font>&#091;[[#Note|nota 1]]&#093;</sup>
 
     .Map["GoogleMap"].Visible = True
 
     .Map["GoogleMap"].Visible = True
 
     .Map.Zoom = 15
 
     .Map.Zoom = 15
Riga 56: Riga 56:
 
    
 
    
 
  <FONT Color=gray>' ''Imposta il centro della circonferenza, lungo la quale saranno posizionati i vari punti da disegnare:''</font>
 
  <FONT Color=gray>' ''Imposta il centro della circonferenza, lungo la quale saranno posizionati i vari punti da disegnare:''</font>
   mp.Lat = 41.89018
+
   mp.Lat = 41.89035
   mp.Lon = 12.49230
+
   mp.Lon = 12.49237
 
   MapView1.Map.Center = mp
 
   MapView1.Map.Center = mp
 
   po = MapView1.Map.MapPointToPixelRel(mp)
 
   po = MapView1.Map.MapPointToPixelRel(mp)
Riga 73: Riga 73:
 
   Next
 
   Next
 
    
 
    
  '''End'''
+
  End
  
  
==Disegnare un semplice punto <SPAN Style="text-decoration:underline">senza</span> utilizzare il Metodo ''.AddCircle( )''==
+
==Disegnare un semplice punto <SPAN Style="text-decoration:underline">senza</span> utilizzare il Metodo ".AddCircle()"==
Si può, volendo, disegnare un semplice punto anche senza utilizzare il Metodo ''.AddCircle( )'', disegnando su un oggetto ''Image'' un cerchio o un rettangolo colorato.
+
Si può, volendo, disegnare un semplice punto anche senza utilizzare il Metodo ".AddCircle()", disegnando su un oggetto ''Image'' un cerchio o un rettangolo colorato.
  '''Public''' Sub Form_Open()
+
  Public Sub Form_Open()
 
    
 
    
 
   With MapView1.Map
 
   With MapView1.Map
Riga 87: Riga 87:
 
   End With  
 
   End With  
 
        
 
        
  '''End'''
+
  End
 +
 
   
 
   
 +
Public Sub MapView1_MouseUp()
 
   
 
   
'''Public''' Sub MapView1_MouseUp()
+
  If Not Mouse.Right Then Return  <FONT Color=darkgreen>' ''Se si clicca con il tasto destro del mouse, si disegnerà sulla mappa''</font>
 
    
 
    
 
   Dim mp As MapPoint
 
   Dim mp As MapPoint
Riga 108: Riga 110:
 
     .DrawText(Format(mp.Lat, "#.######") & "\n" & Format(mp.Lon, "#.######"), 35, 14, im.W, im.H, Align.Normal)
 
     .DrawText(Format(mp.Lat, "#.######") & "\n" & Format(mp.Lon, "#.######"), 35, 14, im.W, im.H, Align.Normal)
 
  <FONT Color=gray>' ''Disegna un cerchietto pieno come punto delle coordinate:''</font>
 
  <FONT Color=gray>' ''Disegna un cerchietto pieno come punto delle coordinate:''</font>
     .Arc(30, 45, 2, 0, 360, False)
+
     .Arc(45, 30, 2, Rad(0), Rad(360), False)
 
     .Fill
 
     .Fill
 
     .End
 
     .End
Riga 119: Riga 121:
 
   End With
 
   End With
 
    
 
    
  '''End'''
+
  End
  
  
Riga 133: Riga 135:
 
Mostriamo un semplice codice esemplificativo:
 
Mostriamo un semplice codice esemplificativo:
 
  Private MapView1 As MapView
 
  Private MapView1 As MapView
 +
Private Const ZOOM As Byte = 14
 
  Private pn As Panel
 
  Private pn As Panel
 
  Private mmpp As New MapPoint[]
 
  Private mmpp As New MapPoint[]
 
   
 
   
 
   
 
   
  '''Public''' Sub Form_Open()
+
  Public Sub Form_Open()
 
    
 
    
 
   With MapView1 = New MapView(Me) As "MapView1"
 
   With MapView1 = New MapView(Me) As "MapView1"
Riga 144: Riga 147:
 
     .W = Me.W
 
     .W = Me.W
 
     .H = Me.H
 
     .H = Me.H
 +
    .Map.Center = New MapPoint(41.89018, 12.49230)
 +
    .Map.Zoom = ZOOM
 
     .Map.AddTile("topo", "https&#058;//a.tile.opentopomap.org/{z}/{x}/{y}.png")
 
     .Map.AddTile("topo", "https&#058;//a.tile.opentopomap.org/{z}/{x}/{y}.png")
 
  <FONT Color=gray>' ''Individua dapprima l'Oggetto "Figlio" della "MapView", che è un "Panel":''</font>
 
  <FONT Color=gray>' ''Individua dapprima l'Oggetto "Figlio" della "MapView", che è un "Panel":''</font>
Riga 149: Riga 154:
 
   End With
 
   End With
 
    
 
    
  '''End'''
+
  End
 
   
 
   
 
   
 
   
  '''Public''' Sub MapView1_MouseUp()
+
  Public Sub MapView1_MouseUp()
 
    
 
    
 
   Dim pt As New Point(Mouse.X, Mouse.Y)
 
   Dim pt As New Point(Mouse.X, Mouse.Y)
Riga 163: Riga 168:
 
   MapView1.Refresh
 
   MapView1.Refresh
 
    
 
    
  '''End'''
+
  End
 
   
 
   
 
   
 
   
  '''Public''' Sub <FONT Color=#B22222>MapView1_Draw()</font>
+
  Public Sub <FONT Color=#B22222>MapView1_Draw()</font>
 
    
 
    
   Dim x, y As Float = 50.0
+
   Dim w, h As Float = 50.0
 
   Dim i As Integer
 
   Dim i As Integer
 
    
 
    
Riga 174: Riga 179:
 
  <FONT Color=gray>' ''Disegna sull'Oggetto "Figlio" del "Panel", che è una "DrawingArea", la stessa che la Classe "MapView" usa per mostrare la mappa:''</font>
 
  <FONT Color=gray>' ''Disegna sull'Oggetto "Figlio" del "Panel", che è una "DrawingArea", la stessa che la Classe "MapView" usa per mostrare la mappa:''</font>
 
     .Begin(<FONT Color=#B22222>pn.Children[0]</font>)
 
     .Begin(<FONT Color=#B22222>pn.Children[0]</font>)
     .Brush = .Color(Color.Yellow)
+
     .Brush = .Color(Color.Red)
     .LineWidth = 2.0
+
<FONT Color=gray>' ''Usa la formula per proporzionare lo spessore della circonferenza del cerchio allo zoom corrente:''</font>
 +
     .LineWidth = 2.0 <FONT Color=darkgreen>* CSingle(2 ^ (MapView1.Map.Zoom - ZOOM))</font>
 
     For i = 0 to mmpp.Max
 
     For i = 0 to mmpp.Max
  <FONT Color=gray>' ''(x / 2) e (y / 2) per centrare il cerchio nel punto dove si clicca con il mouse:''</font>
+
  <FONT Color=gray>' ''(w / 2) e (h / 2) per centrare il cerchio nel punto dove si clicca con il mouse ed usa la formula per proporzionare la dimensione del cerchio allo zoom corrente:''</font>
       .Ellipse(MapView1.Map.MapPointToPixelRel(mmpp[i]).X - (x / 2), MapView1.Map.MapPointToPixelRel(mmpp[i]).Y - (y / 2), x, y, Rad(0), Rad(360), False)
+
       .Ellipse(MapView1.Map.MapPointToPixelRel(mmpp[i]).X - (w / 2), MapView1.Map.MapPointToPixelRel(mmpp[i]).Y - (h / 2), w <FONT Color=darkgreen>* CSingle(2 ^ (MapView1.Map.Zoom - ZOOM))</font>, h <FONT Color=darkgreen>* CSingle(2 ^ (MapView1.Map.Zoom - ZOOM))</font>, Rad(0), Rad(360), False)
 
  <FONT Color=gray>' ''E' possibile anche usare il Metodo ".Arc()".''</font>
 
  <FONT Color=gray>' ''E' possibile anche usare il Metodo ".Arc()".''</font>
 
     Next
 
     Next
Riga 184: Riga 190:
 
     .End
 
     .End
 
   End With
 
   End With
 
+
  '''End'''
+
  End
  
In quest'altro esempio nel punto, ove si è cliccato con il puntatore del mouse, si disegneranno in sequenza sulla mappa, mostrata dall'Oggetto "MapView", dei cerchi concentrici, lasciando alla fine dell'effetto grafico un solo punto.
+
In quest'altro esempio nel punto, ove si è cliccato con il puntatore del mouse, si disegneranno in sequenza sulla mappa, mostrata dall'Oggetto "MapView", dei cerchi concentrici, lasciando alla fine dell'effetto grafico un solo punto. <SUP>&#091;[[#Note|nota 2]]&#093;</sup>
 
  Private MapView1 As MapView
 
  Private MapView1 As MapView
 
  Private pn As Panel
 
  Private pn As Panel
Riga 194: Riga 200:
 
   
 
   
 
   
 
   
  '''Public''' Sub Form_Open()
+
  Public Sub Form_Open()
 
   
 
   
 
   With Me
 
   With Me
Riga 211: Riga 217:
 
   pn = MapView1.Children[0]
 
   pn = MapView1.Children[0]
 
   
 
   
  '''End'''
+
  End
 
   
 
   
'''Public''' Sub MapView1_MouseUp()
 
 
   
 
   
   If Mouse.Left Then  
+
Public Sub MapView1_MouseUp()
 +
 +
   If Mouse.Right Then   <FONT Color=gray>' ''Se si clicca con il tasto destro del mouse, si disegnerà sulla mappa''</font>
 
     Dim c As Short
 
     Dim c As Short
 
     pt = New Point(Mouse.X, Mouse.Y)
 
     pt = New Point(Mouse.X, Mouse.Y)
    MapView1.Map.PixelToMapPointRel(pt)
 
    Me.Text = Format(MapView1.Map.PixelToMapPointRel(pt).Lat, "0.000000") & "  " &
 
              Format(MapView1.Map.PixelToMapPointRel(pt).Lon, "0.000000")
 
 
  <FONT Color=gray>' ''Fornisce i dati per far disegnare in sequenza sulla mappa, mostrata dall'Oggetto "MapView", dei cerchi concentrici:''</font>
 
  <FONT Color=gray>' ''Fornisce i dati per far disegnare in sequenza sulla mappa, mostrata dall'Oggetto "MapView", dei cerchi concentrici:''</font>
 
     For c = 28 DownTo 1 Step 3
 
     For c = 28 DownTo 1 Step 3
Riga 226: Riga 230:
 
       MapView1.Refresh
 
       MapView1.Refresh
 
       Wait 0.1
 
       Wait 0.1
     Next  
+
     Next
 +
    If Object.IsValid(pt) Then Me.Text = Format(MapView1.Map.PixelToMapPointRel(pt).Lat, "0.000000") &
 +
                                        "  " &
 +
                                        Format(MapView1.Map.PixelToMapPointRel(pt).Lon, "0.000000")
 
   Endif  
 
   Endif  
 
   
 
   
  '''End'''
+
  End
  '''Public''' Sub MapView1_MouseDown()
+
 +
 +
<FONT Color=gray>' ''Viene sollevato questo Evento, se si sposta il mouse sulla mappa tenendo premuto un tasto:''</font>
 +
  Public Sub MapView1_MouseDrag()
 
   
 
   
 
   pt = Null
 
   pt = Null
 
   
 
   
  '''End'''
+
  End
  '''Public''' Sub MapView1_MouseWheel()
+
   
 +
 +
Public Sub MapView1_MouseWheel()
 
   
 
   
 
   pt = Null
 
   pt = Null
 
   
 
   
  '''End'''
+
  End
 
   
 
   
  '''Public''' Sub MapView1_Draw()
+
 
 +
  Public Sub MapView1_Draw()
 
   
 
   
 
   If Not Object.IsValid(pt) Then Return  
 
   If Not Object.IsValid(pt) Then Return  
Riga 257: Riga 270:
 
   End With
 
   End With
 
   
 
   
  '''End'''
+
  End
  
  
  
 
=Note=
 
=Note=
[1] Qualora la mappa non appaia, verificare la versione GoogleMap, ed eventualmente modificarla in questa parte del codice: ["version": "904"]
+
[1] Qualora la mappa non appaia, verificare la versione GoogleMap, ed eventualmente modificarla in questa parte del codice: ["version": "979"]
<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]]
 +
 
 +
[2] Vedere anche la pagina: [[Disegnare sulla MapView dei cerchi concentrici al punto ove si è cliccato con il puntatore del mouse]]

Versione attuale delle 18:27, 2 mag 2024

Disegnare un Punto o un Cerchio con il Metodo ".AddShape().AddCircle()" della Classe "Map"

Disegnare un Punto

Per disegnare su una MapView un punto con il Metodo ".AddShape().AddCircle()" della Classe "Map", è necessario assegnare un piccolo valore al terzo argomento del predetto Metodo e assegnare un colore al settimo argomento, affinché l'elemento geometrico appaia come un "punto" (un piccolo cerchio pieno) e non come un cerchio vuoto.

Public Sub Form_Open()
 
 Dim mp As New MapPoint(41.89018, 12.49230)
   
 With MapView1.Map
   .AddTile("GoogleMap", "https://mt0.google.com/vt/lyrs=s&hl=&x={x}&y={y}&z={z}")
   .Zoom = 15
' Imposta il centro del punto:
   .Center = mp
' Disegna infine il punto:
   .AddShape("colosseo").AddCircle("punto", mp, 4, Color.Red, 1, 1, Color.Red)
 End With 
   
End

Il terzo argomento stabilisce la dimensione in pixel del punto. Il quarto argomento assegna il colore alla circonferenza, mentre il settimo riempie il punto con il colore ivi impostato.


Disegnare un Cerchio

Per disegnare su una MapView un cerchio mediante il Metodo , è possibile utilizzare il Metodo .AddCircle( ) del Metodo ".AddShape( )" della Classe "Map".
E' sufficiente assegnare un adeguato valore al terzo argomento e il valore della trasparenza al settimo argomento, se si vuole ottenere un cerchio vuoto, altrimenti un colore opaco se si vuole ottenere un cerchio pieno. Per variare lo spessore della circonferenza bisogna operare sul quinto argomento.

Public Sub Form_Open()
 
 Dim mp As New MapPoint(41.89035, 12.49237)
   
 With MapView1.Map
   .AddTile("GoogleMap", "https://mt0.google.com/vt/lyrs=s&hl=&x={x}&y={y}&z={z}")
   .Zoom = 15
' Imposta il centro del cerchio:
   .Center = mp
' Disegna infine il cerchio:
   .AddShape("colosseo").AddCircle("cerchio", mp, 100, Color.Red, 1, 1, Color.Transparent)
 End With 
   
End

Se si vuole, ad esempio, creare un cerchio riempito di un colore e con la circonferenza disegnata da altro colore:

MapView1.Map.AddShape("cerchio").AddCircle("cerchio", mp, 100, Color.Red, 2, 1, Color.Yellow)


Disegnare più punti

Mostriamo un esempio pratico per disegnare più punti lungo un'ideale circonferenza:

Public Sub Form_Open()
 
 Dim x_a, y_o, r, an As Short
 Dim po As New Point
 Dim mp As New MapPoint
  
 With MapView1
   .Map.AddTile("GoogleMap", "https://khms{s}.google.it/kh/v={version}&src=app&x={x}&y={y}&z={z}&s=Galile", ["version": "979"]).SubDomains = ["0", "1", "2"]   '[nota 1]
   .Map["GoogleMap"].Visible = True
   .Map.Zoom = 15
 End With
 
' Imposta il centro della circonferenza, lungo la quale saranno posizionati i vari punti da disegnare:
 mp.Lat = 41.89035
 mp.Lon = 12.49237
 MapView1.Map.Center = mp
 po = MapView1.Map.MapPointToPixelRel(mp)
  
 x_a = po.X   ' Rappresenta la distanza X della circonferenza dal punto 0 (angolo in alto a sinistra)
 y_o = po.y   ' Rappresenta la distanza Y della circonferenza dal punto 0 (angolo in alto a sinistra)
 r = 50       ' Rappresenta la dimensione del raggio della circonferenza
 
' Descrive un angolo da 0° sino a 360° (quindi un'intera circonferenza):
  For an = 0 To 360 Step 30
    po.X = x_a + r * Cos(Rad(an)) 
    po.Y = y_o + r * Sin(Rad(an))
    mp = MapView1.Map.PixelToMapPointRel(po)
    MapView1.Map.AddShape("italia").AddCircle("cerchio", mp, 5, Color.Red, 1, 1, Color.Yellow)
  Next
  
End


Disegnare un semplice punto senza utilizzare il Metodo ".AddCircle()"

Si può, volendo, disegnare un semplice punto anche senza utilizzare il Metodo ".AddCircle()", disegnando su un oggetto Image un cerchio o un rettangolo colorato.

Public Sub Form_Open()
  
 With MapView1.Map
   .AddTile("Open Topo", "https://a.tile.opentopomap.org/{z}/{x}/{y}.png")
   .Zoom = 15
' Imposta il centro della mappa:
   .Center = MapPoint(41.89018, 12.49230)
 End With 
      
End


Public Sub MapView1_MouseUp()

 If Not Mouse.Right Then Return   ' Se si clicca con il tasto destro del mouse, si disegnerà sulla mappa
 
 Dim mp As MapPoint
 Dim pt As New Point(Mouse.X, Mouse.Y)
 Dim im As Image
 
 mp = MapView1.Map.PixelToMapPointRel(pt)
 
' Crea l'oggetto "Image":
 im = New Image(90, 60, Color.Transparent, gb.Standard)
 
' Scrive le coordinate geografiche nell'oggetto "Image" in forma testuale:
 With Paint
   .Begin(im)
   .Font.Size = 8
   .Brush = .Color(Color.Red)
   .DrawText(Format(mp.Lat, "#.######") & "\n" & Format(mp.Lon, "#.######"), 35, 14, im.W, im.H, Align.Normal)
' Disegna un cerchietto pieno come punto delle coordinate:
   .Arc(45, 30, 2, Rad(0), Rad(360), False)
   .Fill
   .End
 End With
 
 With MapView1
   .Map.AddShape("immagine").AddPoint("immagine", mp, Color.Default, im)
   .Refresh()
   .Map.Refresh()
 End With
 
End


Disegnare un cerchio o una ellisse o un punto su una MapView usando l'Oggetto "Figlio" DrawingArea

L'Oggetto "MapView" mostra la mappa su una "DrawingArea", che è un Oggetto "Figlio" di un "Panel", "Figlio" a sua volta dell'Oggetto "MapView":

MapView
 padre di un
Panel
 padre di una
DrawingArea

Pertanto, sarà possibile utilizzare tale "DrawingArea" per disegnare qualsiasi cosa, facendola apparire al di sopra della mappa.

Mostriamo un semplice codice esemplificativo:

Private MapView1 As MapView
Private Const ZOOM As Byte = 14
Private pn As Panel
Private mmpp As New MapPoint[]


Public Sub Form_Open()
 
 With MapView1 = New MapView(Me) As "MapView1"
   .X = 0
   .Y = 0
   .W = Me.W
   .H = Me.H
   .Map.Center = New MapPoint(41.89018, 12.49230)
   .Map.Zoom = ZOOM
   .Map.AddTile("topo", "https://a.tile.opentopomap.org/{z}/{x}/{y}.png")
' Individua dapprima l'Oggetto "Figlio" della "MapView", che è un "Panel":
   pn = .Children[0]
 End With
 
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 w, h As Float = 50.0
 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])
   .Brush = .Color(Color.Red)
' Usa la formula per proporzionare lo spessore della circonferenza del cerchio allo zoom corrente:
   .LineWidth = 2.0 * CSingle(2 ^ (MapView1.Map.Zoom - ZOOM))
   For i = 0 to mmpp.Max
' (w / 2) e (h / 2) per centrare il cerchio nel punto dove si clicca con il mouse ed usa la formula per proporzionare la dimensione del cerchio allo zoom corrente:
     .Ellipse(MapView1.Map.MapPointToPixelRel(mmpp[i]).X - (w / 2), MapView1.Map.MapPointToPixelRel(mmpp[i]).Y - (h / 2), w * CSingle(2 ^ (MapView1.Map.Zoom - ZOOM)), h * CSingle(2 ^ (MapView1.Map.Zoom - ZOOM)), Rad(0), Rad(360), False)
' E' possibile anche usare il Metodo ".Arc()".
   Next
   .Stroke
   .End
 End With

End

In quest'altro esempio nel punto, ove si è cliccato con il puntatore del mouse, si disegneranno in sequenza sulla mappa, mostrata dall'Oggetto "MapView", dei cerchi concentrici, lasciando alla fine dell'effetto grafico un solo punto. [nota 2]

Private MapView1 As MapView
Private pn As Panel
Private pt As Point
Private ct As Short


Public Sub Form_Open()

 With Me
  .W = Screen.AvailableWidth
  .H = Screen.AvailableHeight
  .Arrangement = Arrange.Fill
End With
With MapView1 = New MapView(Me) As "MapView1"
  .Map.AddTile("GoogleMap", "https://mt0.google.com/vt/lyrs=s&hl=&x={x}&y={y}&z={z}")
  .Map.Zoom = 15
' Imposta il centro del punto:
  .Map.Center = New MapPoint(41.89018, 12.49230)
End With

' Individua dapprima l'Oggetto "Figlio" della "MapView", che è un "Panel":
 pn = MapView1.Children[0]

End


Public Sub MapView1_MouseUp()

 If Mouse.Right Then   ' Se si clicca con il tasto destro del mouse, si disegnerà sulla mappa
   Dim c As Short
   pt = New Point(Mouse.X, Mouse.Y)
' Fornisce i dati per far disegnare in sequenza sulla mappa, mostrata dall'Oggetto "MapView", dei cerchi concentrici:
   For c = 28 DownTo 1 Step 3
     ct = c
     MapView1.Refresh
     Wait 0.1
   Next
   If Object.IsValid(pt) Then Me.Text = Format(MapView1.Map.PixelToMapPointRel(pt).Lat, "0.000000") &
                                        "   " &
                                        Format(MapView1.Map.PixelToMapPointRel(pt).Lon, "0.000000")
 Endif 

End


' Viene sollevato questo Evento, se si sposta il mouse sulla mappa tenendo premuto un tasto:
Public Sub MapView1_MouseDrag()

 pt = Null

End


Public Sub MapView1_MouseWheel()

 pt = Null

End

 
Public Sub MapView1_Draw()

 If Not Object.IsValid(pt) Then Return 

 With Paint
   .Begin(pn.Children[0])
   .Brush = .Color(Color.Red)
   .Arc(pt.X, pt.Y, 2 * ct, Rad(0), Rad(360), False)
   If ct > 1 Then 
     .Stroke
   Else 
     .Fill
   Endif 
   .End
 End With

End


Note

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

[2] Vedere anche la pagina: Disegnare sulla MapView dei cerchi concentrici al punto ove si è cliccato con il puntatore del mouse