Ejemplo n.º 1
0
        void RoutingAlgorithm_FindingRoute(object sender, FindingRouteRoutingAlgorithmEventArgs e)
        {
            Collection <string> startPointAdjacentIds = e.RouteSegment.StartPointAdjacentIds;
            Collection <string> endPointAdjacentIds   = e.RouteSegment.EndPointAdjacentIds;

            Collection <string> beContainedFeatureIds = new Collection <string>();

            foreach (string featureId in startPointAdjacentIds)
            {
                if (avoidableFeatureIds.Contains(featureId))
                {
                    beContainedFeatureIds.Add(featureId);
                }
            }
            foreach (string featureId in endPointAdjacentIds)
            {
                if (avoidableFeatureIds.Contains(featureId))
                {
                    beContainedFeatureIds.Add(featureId);
                }
            }

            // Remove the ones that be contained in the avoidable area
            foreach (string id in beContainedFeatureIds)
            {
                if (e.RouteSegment.StartPointAdjacentIds.Contains(id))
                {
                    e.RouteSegment.StartPointAdjacentIds.Remove(id);
                }
                if (e.RouteSegment.EndPointAdjacentIds.Contains(id))
                {
                    e.RouteSegment.EndPointAdjacentIds.Remove(id);
                }
            }
        }
Ejemplo n.º 2
0
        void Algorithm_FindingPath(object sender, FindingRouteRoutingAlgorithmEventArgs e)
        {
            Collection <string> localRoads = new Collection <string>();
            Collection <string> highways   = new Collection <string>();

            foreach (string item in e.RouteSegment.StartPointAdjacentIds)
            {
                RouteSegment road = routingEngine.RoutingSource.GetRouteSegmentByFeatureId(item);
                if (road.RouteSegmentType == 2)
                {
                    highways.Add(item);
                }
                else
                {
                    localRoads.Add(item);
                }
            }

            foreach (string item in e.RouteSegment.EndPointAdjacentIds)
            {
                RouteSegment road = routingEngine.RoutingSource.GetRouteSegmentByFeatureId(item);
                if (road.RouteSegmentType == 2)
                {
                    highways.Add(item);
                }
                else
                {
                    localRoads.Add(item);
                }
            }

            if (cbmPrioritiy.Text == "On Foot")
            {
                if (localRoads.Count > 0)
                {
                    foreach (string item in highways)
                    {
                        e.RouteSegment.StartPointAdjacentIds.Remove(item);
                        e.RouteSegment.EndPointAdjacentIds.Remove(item);
                    }
                }
            }
        }
Ejemplo n.º 3
0
        private void Algorithm_FindingPath(object sender, FindingRouteRoutingAlgorithmEventArgs e)
        {
            Collection <string> beContainedFeatureIds = new Collection <string>();

            featureSource.Open();
            Collection <string> startPointAdjacentIds = e.RouteSegment.StartPointAdjacentIds;
            Collection <string> endPointAdjacentIds   = e.RouteSegment.EndPointAdjacentIds;

            featureSource.Close();

            foreach (string id in startPointAdjacentIds)
            {
                if (!allowFeatureIds.Contains(id))
                {
                    beContainedFeatureIds.Add(id);
                }
            }
            foreach (string id in endPointAdjacentIds)
            {
                if (!allowFeatureIds.Contains(id))
                {
                    beContainedFeatureIds.Add(id);
                }
            }

            // Remove the ones that be contained in the avoidable area
            foreach (string id in beContainedFeatureIds)
            {
                if (e.RouteSegment.StartPointAdjacentIds.Contains(id))
                {
                    e.RouteSegment.StartPointAdjacentIds.Remove(id);
                }
                if (e.RouteSegment.EndPointAdjacentIds.Contains(id))
                {
                    e.RouteSegment.EndPointAdjacentIds.Remove(id);
                }
            }
        }