Android Question Distance between two points

Discussion in 'Android Questions' started by Beja, Apr 27, 2015.

  1. Beja

    Beja Expert Licensed User

    Hi,
    Long time ago, Erel and Klaus presented an answer to the above question, but I didn't like to resurrect that post, so I will just quote Erel's comment
    Question:
    Is "The current one" the same is the one obtained from LocationChanged? Can I consider it a necessary redundancy?
    Do I have to put the absolute values of location1 (lat lon)?
    Thanks
     
  2. eurojam

    eurojam Well-Known Member Licensed User

    Beja,
    here is an example of one of my apps which has set of Point objects (points of a self guided tour). when the location change occurs, I use the Location.Distanceto in a loop to get the current distance to each point of interest:
    Code:
    Sub OnMyLocationChangeListener1_MyLocationChange(location1 As Location)

        
    For j = 0 To POImap.Size-1
          
    Dim dLabel As Label
          
    Dim p As POI
          
    Dim loc As Location
          
    Dim d As Double
         
          p = POImap.GetValueAt(j)
          dLabel = LabelMap1.Get(p.id)
          loc.Initialize2(p.lat,p.lon)
          d = loc.DistanceTo(location1)
          p.dist = d
          POImap.Put(p.id,p)
          
    If d < 1000 Then
             dLabel.Text = 
    "Entfernung: " & NumberFormat(d,0,0) & " m"
          
    Else
             dLabel.Text = 
    "Entfernung: " & NumberFormat((d/1000),0,2) & " km"
          
    End If
          dLabel.Invalidate
        
    Next

    End Sub
    hope this helps to answer your question, maybe I've missunderstood it...;-)
    stefan
     
    Erel likes this.
  3. Rene Barrera

    Rene Barrera Member Licensed User

    Hi Stefan, is it posible for you to post the complete example due that i didn't understand for instance what is "POImap.Size".
    I want to make an app that each 15 minutes gets the location, and know the distance between to points.

    Thanks in advance
     
  4. eurojam

    eurojam Well-Known Member Licensed User

    Hi Rene,
    the example is part of a large self-guided tour project (over 5000 lines of code) which I developed for a customer, so I can not post the whole project.
    But I can give you some more explanation to the example:

    Code:
    Sub Process_Globals
    ....
    Type POI (lat As Double, lon As Double, tour As Int, visited As Int) 'this is the Type which holds the point information (POI=Point of interest)
    Dim POImap As Map 'this is a Map/Dictionary which holds the various points of my tour
    ....
    end sub

    Sub OnMyLocationChangeListener1_MyLocationChange(location1 As Location)

        
    'when the location changed we loop trough the map and calculationg the distance of each Point of Interest. The labels are also in a map with the same key as the POI
        For j = 0 To POImap.Size-1
          
    Dim dLabel As Label
          
    Dim p As POI 'type declared in process_globals
          Dim loc As Location
          
    Dim d As Double
      
          p = POImap.GetValueAt(j)
         
    'Each POI as a corresponding label in a scrollview showing it's distance to my position....
          dLabel = LabelMap1.Get(p.id)
          loc.Initialize2(p.lat,p.lon)
          d = loc.DistanceTo(location1)
          p.dist = d
          POImap.Put(p.id,p)
         
    'now we are changing the distance information for each poi (label in a scrollview)
          If d < 1000 Then
             dLabel.Text = 
    "Entfernung: " & NumberFormat(d,0,0) & " m"
          
    Else
             dLabel.Text = 
    "Entfernung: " & NumberFormat((d/1000),0,2) & " km"
          
    End If
          dLabel.Invalidate
        
    Next

    End Sub

    hope this helps

    stefan
     
  5. Rene Barrera

    Rene Barrera Member Licensed User

    Stefan, it is very kind of you, this is very helpful. just one more question:
    - What is inside location1 in the line "d = loc.DistanceTo(location1)".
    (I tried to put (Lat, Lon) but i got an error) This is realy what i am looking for

    I appreciate your support
     
  6. eurojam

    eurojam Well-Known Member Licensed User

    OnMyLocationChangeListener1 is a listener declared in the MapFragment1_Ready Sub (it is part of the google maps API)
    Code:
    Sub MapFragment1_Ready
    ....
        
    Dim OnMyLocationChangeListener1 As OnMyLocationChangeListener
         OnMyLocationChangeListener1.Initialize(
    "OnMyLocationChangeListener1")
         GoogleMapsExtras1.SetOnMyLocationChangeListener(GoogleMap1, OnMyLocationChangeListener1)
    ...
    every time when the location of the device changed, the Sub OnMyLocationChangeListener1_MyLocationChange(location1 As Location) starts to work where location1 is the location of the device. But you can also use the GPS location listener, it is nearly the same:
    Code:
    Sub GPS_LocationChanged (Location1 As Location)
    'where location 1 ist the location of the GPS
    end sub
    hope this is not confusing...
     
  7. Rene Barrera

    Rene Barrera Member Licensed User

    Hi Stefan, no, this is not confusing, now it´s clear for me
    I reiterate that I appreciate your support.

    Best Regards
    Armando Barrera
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice