Harita Kontrolü

MapControlAzure Haritalar tarafından desteklenen sembolik, etkileşimli bir Dünya haritası görüntüler. Konumları gösterebilir, raptiyeler ve özel katmanlar ekleyebilir ve kullanıcıların kaydırma, yakınlaştırma, döndürme ve aralık denetimlerini kullanarak haritayla etkileşim kurmasını sağlayabilirsiniz.

MapControl bir Azure Haritalar hesabı gerektirir. Azure Haritalar hesabınızı yönetme adresindeki yönergeleri izleyerek bir hesap oluşturun ve bir harita hizmeti belirteci alın.

Doğru kontrol bu mu?

Uygulamanızda coğrafi verileri görüntülemek istediğinizde mapcontrol kullanın, örneğin:

  • Harita üzerinde işaretçiyle bir konum gösteriliyor.
  • İlgi çekici noktaların bir koleksiyonunu görüntüleme.
  • Yakınlaştırma ve kaydırma ile etkileşimli bir harita deneyimi sağlama.

MapControl oluşturma

WinUI 3 Galeri simgesi WinUI 3 Galeri uygulaması, WinUI denetimlerinin ve özelliklerinin etkileşimli örneklerini içerir. uygulamayı Microsoft Store adresinden alın veya GitHub üzerindeki kaynak koduna göz atın.

Sayfanıza bir MapControl ekleyin ve MapServiceToken değerini Azure Haritalar anahtarınıza ayarlayın.

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

Harita konumunu ayarlama

Haritanın ne görüntüleyişini denetlemek için Center ve ZoomLevel özelliklerini ayarlayın.

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" />

Haritaya pin ekleme

Haritada işaretçileri görüntülemek için MapIcon'u kullanın. MapElementsLayer'a simgeler ekleyin ve ardından katmanı haritanın Katmanlar koleksiyonuna ekleyin.

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);

Etkileşimli denetimleri gösterme veya gizleme

InteractiveControlsVisible özelliği, haritanın yakınlaştırma, döndürme, perde ve harita stili için yerleşik katman denetimleri görüntüleyip görüntülemediğini denetler.

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

Harita öğelerine tıklamayı işleme

Kullanıcı pin gibi bir eşleme öğesine tıkladığında yanıt vermek için MapElementClick olayına abone olun.

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

Harita hizmeti hatalarını işleme

MapServiceErrorOccurred olayına abone olarak, geçersiz veya eksik mapserviceToken gibi harita hizmetiyle iletişim kuran sorunları algılayın.

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