Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 317
  • Last Modified:

MapPoint: My distances and times doesn't match the MapPoint WebService, or the MapPoint Windows program

Hi,

I'm new to the MapPoint ActiveX control and have written some code to get the distance and time betwen two points.  But they don't match the MapPoint web service.  Furthermore, they don't even match the values given by the MapPoint Windows application.

So, I obviously have some problem with the way I've written the code to extact this data from MapPoint.  I've included two functions that I've coded.  The first, GetDistanceAndDuration(), returns a comma delimited string like, "1.1, 4.5";  It calls GetLocationFromAddress(), which returns a location associated with a given address.

I'd really appreciate it if someone could look over my code and give me some help.  I can't use MapPoint until I can figure out how to get good data from it.

Thanks,
Bob


private string GetDistanceAndDuration( string address1, string address2 )
{
      string returnStr = null;
      MapPoint.Route mpRoute      = MpMap.ActiveRoute; // MpMap is a property of the object
      mpRoute.Clear();

      MapPoint.Location loc1 = GetLocationFromAddress( address1 );
      mpRoute.Waypoints.Add( loc1, "loc1" );

      MapPoint.Location loc2 = GetLocationFromAddress( address2 );
      mpRoute.Waypoints.Add( loc2, "loc2" );

      mpRoute.Calculate();

      Double dElapsedTime1      = mpRoute.DrivingTime;
      double duration            = Math.Round( dElapsedTime1 * 24 * 60, 1 );
      double distance            = Math.Round( mpMap.Distance( loc1, loc2 ), 1) ;
                        
      return distance.ToString() + "," + duration.ToString();
}

private MapPoint.Location GetLocationFromAddress( string address )
{
    string[] addressSplit = address.Split(new Char[] {','});
    string street      = addressSplit[0];
    string city      = addressSplit[1];
    string state      = addressSplit[2];

    MapPoint.Map mpMap = preferences.MpMap;
    MapPoint.Route mpRoute               = mpMap.ActiveRoute;
    MapPoint.FindResults mpFindResults;
    mpFindResults = mpMap.FindAddressResults( street, city, "", state, "", 244 );

    if (mpFindResults.Count >= 1)
    {
        mpRoute = mpMap.ActiveRoute;
        IEnumerator item = mpFindResults.GetEnumerator();
        item.Reset();
        item.MoveNext();

        return (MapPoint.Location)item.Current;
    }                  
    return null;
}
0
ba272
Asked:
ba272
  • 2
  • 2
1 Solution
 
ba272Author Commented:
Chester, if you read this, I take that back about the discussion link you sent me.  I was simply looking inside a particular thread.  It looks like a good site. Thanks.
0
 
Chester_M_RagelCommented:
Hi,

Ok. Cool :). I don't have much experience with MapPoint. Anyway I'll try my best to help you out. I think you can use map point web service to find the distance. Why you are not using that?

Chester.
0
 
ba272Author Commented:
Chester,

I have been using that for months now.  But the problem will be latency of the web.  I need more immediate results, which only the ActiveX control can give me.  So I'm currently migrating to the desktop version of MapPoint.


Bob
0
 
Chester_M_RagelCommented:
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now