Differenze tra le versioni di "Individuare su una MapView un punto geografico avendo un punto iniziale, l'angolo di declinazione e la distanza"

Da Gambas-it.org - Wikipedia.
 
(5 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
 
Per individuare su una ''MapView'' un punto geografico avendo:
 
Per individuare su una ''MapView'' un punto geografico avendo:
<BR>- l'Oggetto del punto iniziale;
+
<BR>- il punto iniziale (Pi);
<BR>- l'angolo di declinazione rispetto all'asse della latitudine di tale punto;
+
<BR>- l'angolo (a) di declinazione rispetto all'asse della latitudine (AL) di tale punto;
<BR>- la distanza tra il punto iniziale e il punto da individuare;
+
<BR>- la distanza (D) tra il punto iniziale e il punto da individuare (Pf);
<BR>si dovrà utilizzare il Metodo ".From( )" della Classe ''MapPoint''.
+
AL
 +
|    '''Pf'''
 +
|    /
 +
|  /
 +
|^^/D
 +
|a/
 +
|/
 +
'''Pi'''
 +
si dovrà utilizzare il Metodo ".From()" della Classe ''MapPoint''.
  
 
Vediamo un esempio <SUP>&#091;[[#Note|nota 1]]&#093;</sup> (basterà cliccare una sola volta con il tasto destro del mouse, per vedere individuato sulla ''MapView'' il secondo punto):
 
Vediamo un esempio <SUP>&#091;[[#Note|nota 1]]&#093;</sup> (basterà cliccare una sola volta con il tasto destro del mouse, per vedere individuato sulla ''MapView'' il secondo punto):
 +
Private MapView1 As MapView
 +
 +
 +
Public Sub _new()
 +
 +
  With Me
 +
    .W = Screen.AvailableWidth
 +
    .H = Screen.AvailableHeight
 +
    .Arrangement = Arrange.Fill
 +
  End With
 +
 +
  MapView1 = New MapView(Me) As "MapView1"
 +
 +
End
 +
 +
 
  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": "979"]).SubDomains = ["0", "1", "2"]
+
   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": "979"]).SubDomains = ["0", "1", "2"]
 +
    .Zoom = 15
 +
    .Center = MapPoint(41.89018, 12.49230)
 +
   End With
 +
 
  End
 
  End
 
   
 
   
Riga 17: Riga 45:
 
   Dim pt As New Point(Mouse.X, Mouse.Y)
 
   Dim pt As New Point(Mouse.X, Mouse.Y)
 
   Dim mmpp As New MapPoint[]
 
   Dim mmpp As New MapPoint[]
 
+
 
   If Mouse.Right Then
 
   If Mouse.Right Then
 
     With MapView1
 
     With MapView1
 
  <FONT Color=gray>' ''Per individuare il primo punto (iniziale):''</font>
 
  <FONT Color=gray>' ''Per individuare il primo punto (iniziale):''</font>
 
       mmpp.Push(.Map.PixelToMapPointRel(pt))
 
       mmpp.Push(.Map.PixelToMapPointRel(pt))
  <FONT Color=gray>' ''Per individuare il secondo punto (finale):''</font>
+
  <FONT Color=gray>' ''Per individuare il secondo punto (finale), si impostano i <FONT Color=darkorange>gradi di declinazione</font> e la <FONT Color=darkgreen>distanza</font> del punto iniziale rispetto a quello da individuare:''</font>
       mmpp.Push(MapPoint.<FONT Color=#B22222>From</font>(mmpp[mmpp.Max], 47.83, 2181.969))
+
       mmpp.Push(MapPoint.<FONT Color=#B22222><B>From</b></font>(mmpp[mmpp.Max], <FONT Color=darkorange>47.83</font>, <FONT Color=darkgreen>2181.969</font>))
 
  <FONT Color=gray>' ''Mostra le coordinate geografiche del secondo punto (finale):''</font>
 
  <FONT Color=gray>' ''Mostra le coordinate geografiche del secondo punto (finale):''</font>
 
       Print mmpp[mmpp.Max].lat, mmpp[mmpp.Max].Lon
 
       Print mmpp[mmpp.Max].lat, mmpp[mmpp.Max].Lon
Riga 40: Riga 68:
  
 
=Note=
 
=Note=
[1] Qualora la mappa non appaia, verificare la versione GoogleMap, ed eventualmente modificarla in questa parte del codice: ["version": "967"]
+
[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]]
 
<BR>Al riguardo vedere: [[Conoscere la versione più recente di Google Maps satellite]]

Versione attuale delle 19:21, 9 giu 2024

Per individuare su una MapView un punto geografico avendo:
- il punto iniziale (Pi);
- l'angolo (a) di declinazione rispetto all'asse della latitudine (AL) di tale punto;
- la distanza (D) tra il punto iniziale e il punto da individuare (Pf);

AL
|     Pf
|    /
|   /
|^^/D
|a/
|/
Pi

si dovrà utilizzare il Metodo ".From()" della Classe MapPoint.

Vediamo un esempio [nota 1] (basterà cliccare una sola volta con il tasto destro del mouse, per vedere individuato sulla MapView il secondo punto):

Private MapView1 As MapView


Public Sub _new()

 With Me
   .W = Screen.AvailableWidth
   .H = Screen.AvailableHeight
   .Arrangement = Arrange.Fill
 End With

 MapView1 = New MapView(Me) As "MapView1"

End 


Public Sub Form_Open()

 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"]
   .Zoom = 15
   .Center = MapPoint(41.89018, 12.49230)
 End With

End


Public Sub MapView1_MouseUp()
 
 Dim pt As New Point(Mouse.X, Mouse.Y)
 Dim mmpp As New MapPoint[]

 If Mouse.Right Then
   With MapView1
' Per individuare il primo punto (iniziale):
     mmpp.Push(.Map.PixelToMapPointRel(pt))
' Per individuare il secondo punto (finale), si impostano i gradi di declinazione e la distanza del punto iniziale rispetto a quello da individuare:
     mmpp.Push(MapPoint.From(mmpp[mmpp.Max], 47.83, 2181.969))
' Mostra le coordinate geografiche del secondo punto (finale):
     Print mmpp[mmpp.Max].lat, mmpp[mmpp.Max].Lon
' Per disegnare il punto finale:
     .Map.AddShape("punto").AddPoint("punto", mmpp[mmpp.Max], Color.Red, Null)
' Per disegnare la linea congiungente i due punti:
     .Map.AddShape("polyline").AddPolyLine("polyline", mmpp, Color.Red, 2, 4)
     .Refresh()
     .Map.Refresh()
   End With  
 Endif
  
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