Welcome to MapForums!

Register, sign in, or use Facebook Connect above to join in and participate in the forum.

When you are signed in, this message, the ads in this row, and the red-underlined link ads all go away.

Subscribe to receive our newsletter.
Subscribe Unsubscribe
Results 1 to 7 of 7

Finding the nearest road given a lat long.

This is a discussion on Finding the nearest road given a lat long. within the MapPoint Desktop Discussion forums, part of the Map Forums category; Hi, I want to find the nearest road from a lat/long the reason I want this is because of the ...

  1. #1
    Anonymous is offline Senior Member Black Belt
    Join Date
    Jul 2002

    Finding the nearest road given a lat long.

    I want to find the nearest road from a lat/long the reason I want this is because of the inherant inaccuracy in GPS's sometimes my car appears off road (only slightly) but when I try to calculate a route based on these waypoints it goes mad and totaly gets it wrong.


  2. #2
    John Meyer's Avatar
    John Meyer is offline Senior Member Blue Belt
    Join Date
    Jul 2002

  3. #3
    dzhong is offline Member Yellow Belt
    Join Date
    Aug 2002
    Hi Scarr,

    I encontered the same problem. Could you give me an update once you have a fix?

    Thanks in advance!

  4. #4
    larry_llama is offline Member Yellow Belt
    Join Date
    Dec 2002
    I have seen this issue pop up a lot, and I have an idea that I am going to try (though i am not quite there yet).. if you are tracking GPS then you know your compass heading. if you are moving along a road, and your gps is returning an invalid point, it must be either to the left or right of you. so if you take a line perpendicular to your compass heading, you can start looking along that line in both directions until you can get a valid location. if you check like 100 feet to either side of you, you should hit the road you want (and not the wrong one). just a thought, but it cuts down on the number of iterations required in the method where you spiral outward 360 degrees around your gps point.

    hope this makes sense. post here if you get this working and i will do the same!

    ps is there any way to get the car icon up on the map screen (like in streets and trips application during gps tracking)

  5. #5
    cwest is offline Junior Member White Belt
    Join Date
    Apr 2005

    how to measure distance and direction

    I’m new to MapPoint, and I want to drag a line from a point that shows distance and direction. I thought pointing a line in a give direction—say 286 degrees—would be an obvious feature similar to “Measure Distance.” Have I missed something or isn’t this doable?

  6. #6
    Wilfried is offline Senior Member Black Belt
    Join Date
    Nov 2004

    I just encountered a similar problem (with other purpose, but my solution may be working for you). What I do is running in a circle around the point where the car 'pretends' to be. I start with a radius of 5 meter and check the circumfence of the circle every 5 meter. If not found I increment the radius by 5 meter till a street is found. In your case I only should do a small maximum of 10..15 meter because you can end up with a wrong street if car is on a non digitized street.

    This is the code (in Delphi). DistanceRes is the resollution (I set it to 5 meter), and MaxDistance is the radius where the routine should give up. FindAddr is the routine that ask Mappoint for streetresults (not listed here).

    function TMapPoint.CalcInCircle(CenterLat, CenterLon: double; Streets: TStrings; out Distance, Angle: integer): boolean;
       Lat, Lon: double;
       Radius: double;         // radius of the circle in degree
       Circum: integer;        // circumfence of the circle in Distance
       Count:  integer;        // the amount of points to calculate on the circumfence
       AngleInc: integer;      // angle increments in degree per calculation
       Distance := DistanceRes;
       while Distance <= MaxDistance do begin
          Radius   &#58;= 1 / 60 / 1852 * Distance;
          Circum   &#58;= Trunc&#40;Distance * 2 * PI&#41;;
          Count    &#58;= Circum div DistanceRes;
          AngleInc &#58;= 360 div Count;
          if AngleInc <= 0 then begin
             Result &#58;= False;
          Angle &#58;= 0;
          while Angle < 360 do begin
             CalcXY&#40;CenterLat, CenterLon, Angle, Radius, Lat, Lon&#41;;
             Result &#58;= FindAddr&#40;Lat, Lon, Streets&#41;;
             if Result then
             Inc&#40;Angle, AngleInc&#41;;
          Inc&#40;Distance, DistanceRes&#41;;
       Result &#58;= False;
    And this is the actulally working horse:

    procedure TMapPoint.CalcXY&#40;centerLat, centerLon, Angle, Radius&#58; double; out Lat, lon&#58; double&#41;;
       a, b, c, r&#58; double;
       &#123;                       B
                             / |
                           /   |
                         /     |
                       /       |
                   c /         | a
                   /           |
                 /             |
               /               |
           A         b          C
           given A en c
           a = c * sin&#40;A&#41;
           b = c * cos&#40;A&#41;
           A == 0 is direction East in this drawing
           a = Latitude offset
           b = Longitude offset
           c = Radius of circle   &#125;
       r &#58;= DegToRad&#40;Angle&#41;;
       c &#58;= Radius;
       a &#58;= c * Sin&#40;r&#41;;
       b &#58;= c * Cos&#40;r&#41; / Cos&#40;DegToRad&#40;centerLat&#41;&#41;;  // correct longitude for circle
       Lat &#58;= CenterLat + a;
       Lon &#58;= CenterLon + b;

  7. #7
    micheln is offline Junior Member Yellow Belt
    Join Date
    Jan 2007

    Re: Finding the nearest road given a lat long.

    Hi Wilfried

    I have a similar need. Actually, I need to show the nearest POI to the actual position of the vehicle. This info should be updated every 2 minutes or so. My POI table has some 1000s records.

    What I'm doing so far is, in a separate thread, to load the POI data in an in-memory dataset (delphi kbmMemTable) and calculate the distance between every POI and the given position (for loop). I store the results (actual position - POI infos - distance) in an array, and finally select the closest POI (min distance).

    I know what I'm doing is REALLY awful but since I didn't have much time when I did it, I didn't really have the choice (optimizing and taking time to search for the better solution when my boss is crying about not meeting an impossible deadline isn't the easiest thing to do

    Anyway, I would like to optimize this now, so Could you give me a hand in adapting your code to my need?

    Best Regards,

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Nearest pushpins
    By Anonymous in forum MapPoint Desktop Discussion
    Replies: 2
    Last Post: 01-07-2004, 06:57 AM
  2. Finding nearest pushpins in dataset
    By Dazzer in forum MapPoint Desktop Discussion
    Replies: 3
    Last Post: 10-17-2003, 08:38 AM
  3. Finding Nearest Gas Station based on brand names- shell
    By Anonymous in forum MapPoint Desktop Discussion
    Replies: 0
    Last Post: 04-09-2003, 01:09 PM
  4. How can I find nearest point on a road from a point off-road
    By Anonymous in forum MapPoint Desktop Discussion
    Replies: 1
    Last Post: 11-12-2002, 06:14 AM
  5. How to find nearest city?
    By Petr Brant in forum MapPoint Desktop Discussion
    Replies: 3
    Last Post: 08-23-2002, 01:49 PM

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84