Anzeigen von Routen und Wegbeschreibungen auf einer KarteDisplay routes and directions on a map

Hinweis

Mapcontrol -und Map-Dienste erfordern einen Zuordnungs Authentifizierungsschlüssel, der als mapservicetokenbezeichnet wird.MapControl and map services requite a maps authentication key called a MapServiceToken. Weitere Informationen zum Abrufen und Festlegen eines Kartenauthentifizierungsschlüssels finden Sie unter Anfordern eines Kartenauthentifizierungsschlüssels.For more info about getting and setting a maps authentication key, see Request a maps authentication key.

Fordern Sie Routen und Wegbeschreibungen an, und zeigen Sie sie in Ihrer App an.Request routes and directions, and display them in your app.

Hinweis

Wenn Sie weitere Informationen zum Verwenden von Maps in Ihrer APP haben, laden Sie das Map-Beispiel für universelle Windows-Plattform (UWP)herunter.To learn more about using maps in your app, download the Universal Windows Platform (UWP) map sample. Wenn die Zuordnung kein zentrales Feature Ihrer APP ist, sollten Sie stattdessen die Windows Maps-app starten.If mapping isn't a core feature of your app, consider launching the Windows Maps app instead. Sie können die URI-Schemas bingmaps:, ms-drive-to: und ms-walk-to: zum Starten der Windows-Karten-App für bestimmte Karten und für Wegbeschreibungen mit Sprachnavigation verwenden.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. Weitere Informationen finden Sie unter Starten der Windows-Karten-App.For more info, see Launch the Windows Maps app.

 

Eine Einführung in die MapRouteFinder-ErgebnisseAn intro to MapRouteFinder results

Hier erfahren Sie, wie Klassen für Routen und Wegbeschreibungen zusammenhängen.Here's how the classes for routes and directions are related:

Rufen Sie mithilfe der Methoden der maproutefinder -Klasse eine Driving-oder Walking-Route und Anweisungen ab.Get a driving or walking route and directions by calling the methods of the MapRouteFinder class. Beispiel: getdrivingrouteasync oder getwalkingrouteasync.For example, GetDrivingRouteAsync or GetWalkingRouteAsync.

Wenn Sie eine Route anfordern, können Sie Folgendes angeben:When you request a route, you can specify the following things:

  • Sie können nur einen Startpunkt und einen Endpunkt oder eine Reihe von Wegpunkten zur Berechnung angeben.You can provide a start point and end point only, or you can provide a series of waypoints to compute the route.

    Mit der Beendigung von "Wegpunkte" werden zusätzliche Routen mit jeweils eigenem Routen hinzugefügt.Stop waypoints adds additional route legs, each with their own Itinerary. Verwenden Sie eine der getdrivingroutefromwaypoinzasync -über Ladungen, um die Beendens von Endpunkten anzugeben.To specify stop waypoints, use any of the GetDrivingRouteFromWaypointsAsync overloads.

    Über "Wegpunkt" definiert Zwischenspeicher Orte zwischen Haltepunkten für das Ende .Via waypoint defines intermediate locations between stop waypoints. Sie fügen keine Routen Beine hinzu.They do not add route legs. Dabei handelt es sich lediglich um Punkte, die eine Route durchlaufen muss.They are merely waypoints that a route must pass through. Verwenden Sie eine der getdrivingroutefromenhancedwaypoinstiasync -über Ladungen, um Sie über "Waypoints" anzugeben.To specify via waypoints, use any of the GetDrivingRouteFromEnhancedWaypointsAsync overloads.

  • Sie können Optimierungen angeben (z. b. den Abstand minimieren).You can specify optimizations (For example: minimize the distance).

  • Sie können Einschränkungen angeben (z. b. vermeiden von Autobahnen).You can specify restrictions (For example: avoid highways).

Anzeigen von WegbeschreibungenDisplay directions

Das MapRouteFinderResult-Objekt enthält ein MapRoute-Objekt, auf das Sie über seine Route-Eigenschaft zugreifen können.The MapRouteFinderResult object contains a MapRoute object that you can access through its Route property.

Die berechnete MapRoute hat Eigenschaften, die die Zeit zum Zurücklegen der Route, die Länge der Route und die Auflistung von MapRouteLeg-Objekten bereitstellen, die die Teilstrecken der Route enthalten.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. Jedes MapRouteLeg-Objekt enthält eine Auflistung von MapRouteManeuver-Objekten.Each MapRouteLeg object contains a collection of MapRouteManeuver objects. Das MapRouteManeuver-Objekt enthält eine Wegbeschreibung, auf die Sie über seine InstructionText-Eigenschaft zugreifen können.The MapRouteManeuver object contains directions that you can access through its InstructionText property.

Wichtig

Sie müssen einen Maps-Authentifizierungsschlüssel angeben, bevor Sie map-Dienste verwenden können.You must specify a maps authentication key before you can use map services. Weitere Informationen finden Sie unter Anfordern eines Kartenauthentifizierungsschlüssels.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();
   }
}

Dieses Beispiel zeigt die folgenden Ergebnisse im tbOutputText-Textfeld an: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.

Anzeigen von RoutenDisplay routes

Blenden Sie eine MapRoute auf einem MapControl ein, indem Sie eine MapRouteView mit der **** MapRoute erstellen.To display a MapRoute on a MapControl, construct a MapRouteView with the MapRoute. Fügen Sie dann maprouteview der Routes -Auflistung des mapcontrol-SteuerElements hinzu.Then, add the MapRouteView to the Routes collection of the MapControl.

Wichtig

Sie müssen einen Maps-Authentifizierungsschlüssel angeben, bevor Sie Kartendienste oder das Karten Steuerelement verwenden können.You must specify a maps authentication key before you can use map services or the map control. Weitere Informationen finden Sie unter Anfordern eines Kartenauthentifizierungsschlüssels.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);
   }
}

In diesem Beispiel werden die folgenden Elemente in einem mapcontrol namens mapwithrouteangezeigt.This example displays the following on a MapControl named MapWithRoute.

Kartensteuerelement mit angezeigter Route

Im folgenden finden Sie eine Version dieses Beispiels, bei der ein via -Wegpunkt zwischen zwei Endpunkten verwendet wird: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);
  }
}