Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Viktigt!
UWP MapControl - och Windows Maps-plattforms-API:er (Windows.Services.Maps.*) är inaktuella och är kanske inte tillgängliga i framtida versioner av Windows. Mer information finns i Resurser för inaktuella funktioner.
Viktigt!
Avveckling av tjänst för Bing Maps for Enterprise
UWP MapControl och karttjänster från namnrymderna Windows.Services.Maps förlitar sig på Bing Maps. Bing Maps for Enterprise är inaktuell och kommer att dras tillbaka, då MapControl och tjänsterna inte längre tar emot data.
Mer information finns i dokumentationen Bing Maps Developer Center och Bing Maps.
Anmärkning
MapControl och karttjänster kräver en kartautentiseringsnyckel som kallas MapServiceToken. Mer information om hur du hämtar och ställer in en maps-autentiseringsnyckel finns i Begär en mappningsautentiseringsnyckel.
Begär vägar och vägbeskrivningar och visa dem i din app.
En introduktion till MapRouteFinder-resultat
Så här är klasserna för vägar och vägbeskrivningar relaterade:
Klassen MapRouteFinder har metoder som hämtar vägar och vägbeskrivningar. Dessa metoder returnerar en MapRouteFinderResult.
MapRouteFinderResult innehåller ett MapRoute-objekt. Få åtkomst till det här objektet via egenskapen Route för MapRouteFinderResult.
MapRoute innehåller en samling MapRouteLeg-objekt. Få åtkomst till den här samlingen via egenskapen Legs för MapRoute.
Varje MapRouteLeg innehåller en samling MapRouteManeuver-objekt . Få åtkomst till den här samlingen via egenskapen Maneuvers för MapRouteLeg.
Hämta en kör- eller gångväg och vägbeskrivning genom att anropa metoderna för klassen MapRouteFinder . Till exempel GetDrivingRouteAsync eller GetWalkingRouteAsync.
När du begär en väg kan du ange följande:
Du kan endast ange en startpunkt och en slutpunkt, eller så kan du ange en serie vägpunkter för att beräkna vägen.
Stop waypoints lägger till ytterligare ruttben, var och en med sin egen resplan. Om du vill ange stoppa vägpunkter använder du någon av GetDrivingRouteFromWaypointsAsync överlagringar.
Via vägpunkt definierar mellanliggande platser mellan stopp vägpunkterna. De lägger inte till delsträckor. De är bara waypoints som en väg måste passera. Om du vill ange via-vägpunkter använder du någon av GetDrivingRouteFromEnhancedWaypointsAsync överlagringar.
Du kan ange optimeringar (till exempel minimera avståndet).
Du kan ange begränsningar (till exempel undvika motorvägar).
Visa riktningar
MapRouteFinderResult-objektet innehåller ett MapRoute-objekt som du kan komma åt via dess route-egenskap.
Den beräknade MapRoute- har egenskaper som ger tid att färdas längs rutten, längden på rutten och samlingen av MapRouteLeg-objekt som innehåller etapperna av rutten. Varje MapRouteLeg-objekt innehåller en samling MapRouteManeuver-objekt . Objektet MapRouteManeuver innehåller anvisningar som du kan komma åt via egenskapen InstructionText .
Viktigt!
Du måste ange en mappningsautentiseringsnyckel innan du kan använda karttjänster. Mer information finns i Begära en kartautentiseringsnyckel.
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();
}
}
I det här exemplet visas följande resultat i tbOutputText
textrutan.
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.
Visa vägar
Om du vill visa en MapRoute på en MapControl skapar du en MapRouteView med MapRoute. Lägg sedan till MapRouteView- i Routes-samlingen för MapControl-.
Viktigt!
Du måste ange en mappningsautentiseringsnyckel innan du kan använda karttjänster eller kartkontrollen. Mer information finns i Begära en kartautentiseringsnyckel.
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);
}
}
I det här exemplet visas följande på en MapControl- med namnet MapWithRoute.
Här är en version av exemplet som använder en vägpunkt över mellan två stoppunkter och.
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);
}
}