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.


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

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

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


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();

return (MapPoint.Location)item.Current;
return null;