Afficher des itinéraires et indications sur une carteDisplay routes and directions on a map

Notes

Collection MapControl et les services cartographiques ont une clé d’authentification Maps appelée MapServiceToken.MapControl and map services requite a maps authentication key called a MapServiceToken. Pour plus d’informations sur l’obtention et la définition d’une clé d’authentification de cartes, voir Demander une clé d’authentification de cartes.For more info about getting and setting a maps authentication key, see Request a maps authentication key.

Demandez des itinéraires et des directions, puis affichez-les dans votre application.Request routes and directions, and display them in your app.

Notes

Pour en savoir plus sur l’utilisation de Maps dans votre application, téléchargez l' exemple de carte plateforme Windows universelle (UWP).To learn more about using maps in your app, download the Universal Windows Platform (UWP) map sample. Si le mappage n’est pas une fonctionnalité de base de votre application, envisagez de lancer l’application Windows Maps à la place.If mapping isn't a core feature of your app, consider launching the Windows Maps app instead. Vous pouvez utiliser les schémas d’URI bingmaps:, ms-drive-to: et ms-walk-to: afin de lancer l’application Cartes Windows en accédant à des cartes, itinéraires et indications étape par étape spécifiques.You can use the bingmaps:, ms-drive-to:, and ms-walk-to: URI schemes to launch the Windows Maps app to specific maps and turn-by-turn directions. Pour plus d’informations, consultez Lancer l’application Cartes Windows.For more info, see Launch the Windows Maps app.

 

Introduction aux résultats de MapRouteFinderAn intro to MapRouteFinder results

Les classes pour les itinéraires et les indications sont associées comme suit :Here's how the classes for routes and directions are related:

Recevez une route ou une direction de conduite en appelant les méthodes de la classe MapRouteFinder .Get a driving or walking route and directions by calling the methods of the MapRouteFinder class. Par exemple, GetDrivingRouteAsync ou GetWalkingRouteAsync.For example, GetDrivingRouteAsync or GetWalkingRouteAsync.

Lorsque vous demandez un itinéraire :When you request a route, you can specify the following things:

  • Vous pouvez indiquer uniquement un point de départ et un point d’arrivée, ou une série de positions pour calculer l’itinéraire.You can provide a start point and end point only, or you can provide a series of waypoints to compute the route.

    L' interruption des points de route ajoute des jambes de route supplémentaires, chacune avec son propre itinéraire.Stop waypoints adds additional route legs, each with their own Itinerary. Pour spécifier des points de route d' arrêt , utilisez l’une des surcharges GetDrivingRouteFromWaypointsAsync .To specify stop waypoints, use any of the GetDrivingRouteFromWaypointsAsync overloads.

    Via un point de route définit des emplacements intermédiaires entre les points de route d' arrêt .Via waypoint defines intermediate locations between stop waypoints. Ils n’ajoutent pas de jambes de route.They do not add route legs. Il s’agit simplement de points de route qu’un itinéraire doit traverser.They are merely waypoints that a route must pass through. Pour spécifier via des points de route, utilisez l’une des surcharges GetDrivingRouteFromEnhancedWaypointsAsync .To specify via waypoints, use any of the GetDrivingRouteFromEnhancedWaypointsAsync overloads.

  • Vous pouvez spécifier des optimisations (par exemple : réduire la distance).You can specify optimizations (For example: minimize the distance).

  • Vous pouvez spécifier des restrictions (par exemple : éviter les autoroutes).You can specify restrictions (For example: avoid highways).

Afficher des indicationsDisplay directions

L’objet MapRouteFinderResult contient un objet MapRoute accessible via sa propriété Route.The MapRouteFinderResult object contains a MapRoute object that you can access through its Route property.

Le MapRoute calculé a des propriétés qui fournissent le temps nécessaire pour parcourir l’itinéraire, la longueur de l’itinéraire et la collection d’objets MapRouteLeg qui contiennent les côtés de l’itinéraire.The computed MapRoute has properties that provide the time to traverse the route, the length of the route, and the collection of MapRouteLeg objects that contain the legs of the route. Chaque objet MapRouteLeg contient une collection d’objets MapRouteManeuver.Each MapRouteLeg object contains a collection of MapRouteManeuver objects. L’objet MapRouteManeuver contient des indications accessibles via sa propriété InstructionText.The MapRouteManeuver object contains directions that you can access through its InstructionText property.

Important

Vous devez spécifier une clé d’authentification Maps pour pouvoir utiliser les services de mappage.You must specify a maps authentication key before you can use map services. Pour plus d’informations, voir Demander une clé d’authentification pour Cartes.For more info, see Request a maps authentication key.

 

using System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.Services.Maps;
using Windows.Devices.Geolocation;
...
private async void button_Click(object sender, RoutedEventArgs e)
{
   // Start at Microsoft in Redmond, Washington.
   BasicGeoposition startLocation = new BasicGeoposition() {Latitude=47.643,Longitude=-122.131};

   // End at the city of Seattle, Washington.
   BasicGeoposition endLocation = new BasicGeoposition() {Latitude = 47.604,Longitude= -122.329};

   // Get the route between the points.
   MapRouteFinderResult routeResult =
         await MapRouteFinder.GetDrivingRouteAsync(
         new Geopoint(startLocation),
         new Geopoint(endLocation),
         MapRouteOptimization.Time,
         MapRouteRestrictions.None);

   if (routeResult.Status == MapRouteFinderStatus.Success)
   {
      System.Text.StringBuilder routeInfo = new System.Text.StringBuilder();

      // Display summary info about the route.
      routeInfo.Append("Total estimated time (minutes) = ");
      routeInfo.Append(routeResult.Route.EstimatedDuration.TotalMinutes.ToString());
      routeInfo.Append("\nTotal length (kilometers) = ");
      routeInfo.Append((routeResult.Route.LengthInMeters / 1000).ToString());

      // Display the directions.
      routeInfo.Append("\n\nDIRECTIONS\n");

      foreach (MapRouteLeg leg in routeResult.Route.Legs)
      {
         foreach (MapRouteManeuver maneuver in leg.Maneuvers)
         {
            routeInfo.AppendLine(maneuver.InstructionText);
         }
      }

      // Load the text box.
      tbOutputText.Text = routeInfo.ToString();
   }
   else
   {
      tbOutputText.Text =
            "A problem occurred: " + routeResult.Status.ToString();
   }
}

Cet exemple montre les résultats suivants dans la zone de texte tbOutputText.This example displays the following results to the tbOutputText text box.

Total estimated time (minutes) = 18.4833333333333
Total length (kilometers) = 21.847

DIRECTIONS
Head north on 157th Ave NE.
Turn left onto 159th Ave NE.
Turn left onto NE 40th St.
Turn left onto WA-520 W.
Enter the freeway WA-520 from the right.
Keep left onto I-5 S/Portland.
Keep right and leave the freeway at exit 165A towards James St..
Turn right onto James St.
You have reached your destination.

Afficher des itinérairesDisplay routes

Pour afficher un MapRoute sur un MapControl, créez un MapRouteView avec MapRoute.To display a MapRoute on a MapControl, construct a MapRouteView with the MapRoute. Ajoutez ensuite MapRouteView à la collection Routes de MapControl.Then, add the MapRouteView to the Routes collection of the MapControl.

Important

Vous devez spécifier une clé d’authentification Maps pour pouvoir utiliser les services de mappage ou le contrôle de carte.You must specify a maps authentication key before you can use map services or the map control. Pour plus d’informations, voir Demander une clé d’authentification pour Cartes.For more info, see Request a maps authentication key.

 

using System;
using Windows.Devices.Geolocation;
using Windows.Services.Maps;
using Windows.UI;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Maps;
...
private async void ShowRouteOnMap()
{
   // Start at Microsoft in Redmond, Washington.
   BasicGeoposition startLocation = new BasicGeoposition() { Latitude = 47.643, Longitude = -122.131 };

   // End at the city of Seattle, Washington.
   BasicGeoposition endLocation = new BasicGeoposition() { Latitude = 47.604, Longitude = -122.329 };


   // Get the route between the points.
   MapRouteFinderResult routeResult =
         await MapRouteFinder.GetDrivingRouteAsync(
         new Geopoint(startLocation),
         new Geopoint(endLocation),
         MapRouteOptimization.Time,
         MapRouteRestrictions.None);

   if (routeResult.Status == MapRouteFinderStatus.Success)
   {
      // Use the route to initialize a MapRouteView.
      MapRouteView viewOfRoute = new MapRouteView(routeResult.Route);
      viewOfRoute.RouteColor = Colors.Yellow;
      viewOfRoute.OutlineColor = Colors.Black;

      // Add the new MapRouteView to the Routes collection
      // of the MapControl.
      MapWithRoute.Routes.Add(viewOfRoute);

      // Fit the MapControl to the route.
      await MapWithRoute.TrySetViewBoundsAsync(
            routeResult.Route.BoundingBox,
            null,
            Windows.UI.Xaml.Controls.Maps.MapAnimationKind.None);
   }
}

Cet exemple affiche ce qui suit sur un MapControl nommé MapWithRoute.This example displays the following on a MapControl named MapWithRoute.

Contrôle de carte avec l’itinéraire affiché.

Voici une version de cet exemple qui utilise un via le point de route entre deux points d' arrêt :Here's a version of this example that uses a via waypoint in between two stop waypoints:

using System;
using Windows.Devices.Geolocation;
using Windows.Services.Maps;
using Windows.UI;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Maps;
...
private async void ShowRouteOnMap()
{
  Geolocator locator = new Geolocator();
  locator.DesiredAccuracyInMeters = 1;
  locator.PositionChanged += Locator_PositionChanged;

  BasicGeoposition point1 = new BasicGeoposition() { Latitude = 47.649693, Longitude = -122.144908 };
  BasicGeoposition point2 = new BasicGeoposition() { Latitude = 47.6205, Longitude = -122.3493 };
  BasicGeoposition point3 = new BasicGeoposition() { Latitude = 48.649693, Longitude = -122.144908 };

  // Get Driving Route from point A  to point B thru point C
  var path = new List<EnhancedWaypoint>();

  path.Add(new EnhancedWaypoint(new Geopoint(point1), WaypointKind.Stop));
  path.Add(new EnhancedWaypoint(new Geopoint(point2), WaypointKind.Via));
  path.Add(new EnhancedWaypoint(new Geopoint(point3), WaypointKind.Stop));

  MapRouteFinderResult routeResult =  await MapRouteFinder.GetDrivingRouteFromEnhancedWaypointsAsync(path);

  if (routeResult.Status == MapRouteFinderStatus.Success)
  {
      MapRouteView viewOfRoute = new MapRouteView(routeResult.Route);
      viewOfRoute.RouteColor = Colors.Yellow;
      viewOfRoute.OutlineColor = Colors.Black;

      myMap.Routes.Add(viewOfRoute);

      await myMap.TrySetViewBoundsAsync(
            routeResult.Route.BoundingBox,
            null,
            Windows.UI.Xaml.Controls.Maps.MapAnimationKind.None);
  }
}