bigderek
11-05-2004, 02:39 PM
Hello everyone -
I've got some VB.Net code using the MapPoint 11.0 COM Objects that are doing bulk calculations of distances between two points.
Here is the basic workflow:
m_oApp.PaneState = geoPaneRoutePlanner
' Ensure we're working in miles
m_oApp.Units = GeoUnits.geoMiles
m_oMap = GetObject(, "MapPoint.Application").ActiveMap
m_oMap.Parent.PaneState = geoPaneRoutePlanner
m_oRoute = m_oMap.ActiveRoute
m_oRoute.Clear()
' Iterate through each row in the data row collection - a row represents an address in the route
For Each dr As DataRow In dsRoutePoints
Dim oLocation As MapPoint.Location
Dim oFindResults As MapPoint.FindResults
oFindResults = m_oMap.FindAddressResults(dr.Item("address").ToString, dr.Item("city").ToString, , _
dr.Item("state").ToString, CStr(dr.Item("zipcode")), "United States")
If oFindResults.ResultsQuality = GeoFindResultsQuality.geoFirstResultGood Then
' The first address seems to be valid - add the waypoint
oLocation = oFindResults(1)
m_oRoute.Waypoints.Add(oLocation)
Else
...
End If
Next
Try
' Calculate the route
m_oRoute.Calculate()
Catch ex As Exception
' Only one waypoint in the row collection - cannot calculate a route
m_oMap.Saved = True
m_oMap = Nothing
ReturnResults.ErrorCode = MapPointStructs.CalculateRouteErrors.OnlyOneWaypoi nt
Return ReturnResults
Exit Function
End Try
m_oMap.Saved = True
' No errors occurred - distance calcualted. Return the results
ReturnResults.ErrorCode = MapPointStructs.CalculateRouteErrors.NoErrors
ReturnResults.DistanceCalculated = m_oRoute.Distance.ToString
m_oRoute.Clear()
m_oRoute = Nothing
Return ReturnResults
What I have found, however is that the MapPoint.exe in the Task Manager is consistantly going up, and up in memory useage. As you can see I am trying to set the Map Object to nothing - but it doesnt seem to be solving the problem.
Any ideas?
Derek
I've got some VB.Net code using the MapPoint 11.0 COM Objects that are doing bulk calculations of distances between two points.
Here is the basic workflow:
m_oApp.PaneState = geoPaneRoutePlanner
' Ensure we're working in miles
m_oApp.Units = GeoUnits.geoMiles
m_oMap = GetObject(, "MapPoint.Application").ActiveMap
m_oMap.Parent.PaneState = geoPaneRoutePlanner
m_oRoute = m_oMap.ActiveRoute
m_oRoute.Clear()
' Iterate through each row in the data row collection - a row represents an address in the route
For Each dr As DataRow In dsRoutePoints
Dim oLocation As MapPoint.Location
Dim oFindResults As MapPoint.FindResults
oFindResults = m_oMap.FindAddressResults(dr.Item("address").ToString, dr.Item("city").ToString, , _
dr.Item("state").ToString, CStr(dr.Item("zipcode")), "United States")
If oFindResults.ResultsQuality = GeoFindResultsQuality.geoFirstResultGood Then
' The first address seems to be valid - add the waypoint
oLocation = oFindResults(1)
m_oRoute.Waypoints.Add(oLocation)
Else
...
End If
Next
Try
' Calculate the route
m_oRoute.Calculate()
Catch ex As Exception
' Only one waypoint in the row collection - cannot calculate a route
m_oMap.Saved = True
m_oMap = Nothing
ReturnResults.ErrorCode = MapPointStructs.CalculateRouteErrors.OnlyOneWaypoi nt
Return ReturnResults
Exit Function
End Try
m_oMap.Saved = True
' No errors occurred - distance calcualted. Return the results
ReturnResults.ErrorCode = MapPointStructs.CalculateRouteErrors.NoErrors
ReturnResults.DistanceCalculated = m_oRoute.Distance.ToString
m_oRoute.Clear()
m_oRoute = Nothing
Return ReturnResults
What I have found, however is that the MapPoint.exe in the Task Manager is consistantly going up, and up in memory useage. As you can see I am trying to set the Map Object to nothing - but it doesnt seem to be solving the problem.
Any ideas?
Derek