Térképvezérlés

A MapControl a Föld szimbolikus, interaktív térképét jeleníti meg Azure Maps segítségével. Megjelenítheti a helyeket, kitűzőket és egyéni rétegeket vehet fel, és pásztázási, nagyítási, forgatási és hangmagasság-vezérlőkkel engedélyezheti a felhasználók számára a térkép használatát.

A MapControlhoz Azure Maps fiók szükséges. Kövesse az Azure Maps-fiók kezelése utasításait a fiók létrehozásához és a térkép szolgáltatási jogkivonatának beszerzéséhez.

Ez a megfelelő vezérlő?

Használjon MapControlt, ha földrajzi adatokat szeretne megjeleníteni az alkalmazásban, például:

  • Hely megjelenítése egy térképen egy kitűzővel.
  • Érdekes pontok gyűjteményének megjelenítése.
  • Interaktív térképélmény biztosítása nagyítással és pásztázással.

MapControl létrehozása

WinUI 3 Katalógus ikon A WinUI 3 Katalógus alkalmazás interaktív példákat tartalmaz a WinUI vezérlőire és funkcióira. Kérje le az alkalmazást a Microsoft Áruházból vagy keresse meg a forráskódot a GitHub webhelyen.

Adjon hozzá egy MapControlt az oldalra, és állítsa az MapServiceToken értékét az Azure Maps kulcsra.

<MapControl x:Name="myMap"
            MapServiceToken="YOUR_AZURE_MAPS_TOKEN"
            Height="400" />

A térkép helyének beállítása

A Térkép megjelenítésének szabályozásához állítsa be a Center és a ZoomLevel tulajdonságokat.

using Windows.Devices.Geolocation;

var position = new BasicGeoposition { Latitude = 47.6062, Longitude = -122.3321 };
myMap.Center = new Geopoint(position);
myMap.ZoomLevel = 12;
<!-- Set initial center and zoom in XAML is not supported; set in code-behind -->
<MapControl x:Name="myMap"
            MapServiceToken="YOUR_AZURE_MAPS_TOKEN"
            Height="400" />

Helyjelzők hozzáadása a térképhez

Használja a MapIcon-t a térképen való megjelenítéséhez. Adjon hozzá ikonokat a MapElementsLayerhez, majd adja hozzá a réteget a térkép Rétegek gyűjteményéhez.

using Windows.Devices.Geolocation;
using Microsoft.UI.Xaml.Controls;
using System.Collections.Generic;

var position = new BasicGeoposition
{
    Latitude = 47.6062,
    Longitude = -122.3321
};

var icon = new MapIcon
{
    Location = new Geopoint(position),
};

var layer = new MapElementsLayer
{
    MapElements = new List<MapElement> { icon }
};

myMap.Layers.Add(layer);

Interaktív vezérlők megjelenítése vagy elrejtése

Az InteractiveControlsVisible tulajdonság azt szabályozza, hogy a térkép beépített átfedésvezérlőket jelenít-e meg a nagyítási, forgatási, hangmagassági és térképstílusokhoz.

<MapControl x:Name="myMap"
            MapServiceToken="YOUR_AZURE_MAPS_TOKEN"
            InteractiveControlsVisible="True"
            Height="400" />

Térképelem kattintásainak kezelése

Iratkozzon fel a MapElementClick eseményre, hogy válaszoljon, amikor a felhasználó egy térképelemre, például egy pin-kódra kattint.

myMap.MapElementClick += (sender, args) =>
{
    foreach (var element in args.MapElements)
    {
        if (element is MapIcon clickedIcon)
        {
            // Handle the clicked icon
        }
    }
};

Térképszolgáltatás hibáinak kezelése

Iratkozzon fel a MapServiceErrorOccurred eseményre, hogy észlelje a térképszolgáltatással kommunikáló problémákat, például egy érvénytelen vagy hiányzó MapServiceTokent.

myMap.MapServiceErrorOccurred += (sender, args) =>
{
    // Log or display the error
    System.Diagnostics.Debug.WriteLine("Map service error occurred.");
};