Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В MapControl отображается символьная интерактивная карта Земли на базе Azure Maps. Вы можете отображать местоположения, добавлять метки и пользовательские слои, а также разрешать пользователям взаимодействовать с картой с помощью элементов управления для сдвига, масштабирования, поворота и наклона.
Для MapControl требуется учетная запись Azure Maps. Следуйте инструкциям на странице Управление учетной записью Azure Maps, чтобы создать учетную запись и получить токен службы карты.
Это правильный контроль?
Используйте MapControl, если вы хотите отобразить географические данные в приложении, например:
- Отображение местоположения на карте с помощью метки.
- Отображение коллекции точек интереса.
- Предоставление возможностей интерактивной карты с увеличением и панорамированием.
Создание MapControl
- Важные API: класс MapControl, классMapIcon, класс MapElementsLayer
![]()
Приложение WinUI 3 Gallery содержит интерактивные примеры элементов управления и функций WinUI. Получите приложение из Microsoft Store или просмотрите исходный код GitHub.
Добавьте MapControl на страницу и задайте MapServiceToken в ключ Azure Maps.
<MapControl x:Name="myMap"
MapServiceToken="YOUR_AZURE_MAPS_TOKEN"
Height="400" />
Задайте местоположение на карте
Задайте свойства Center и ZoomLevel для управления отображением карты.
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" />
Добавить метки на карту
Используйте MapIcon для отображения значков на карте. Добавьте значки в MapElementsLayer, а затем добавьте слой в коллекцию слоев карты.
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);
Отображение или скрытие интерактивных элементов управления
Свойство InteractiveControlsVisible определяет, отображает ли карта встроенные элементы управления для масштабирования, поворота, наклона и стиля карты.
<MapControl x:Name="myMap"
MapServiceToken="YOUR_AZURE_MAPS_TOKEN"
InteractiveControlsVisible="True"
Height="400" />
Обработка кликов по элементам карты
Подпишитесь на событие MapElementClick, чтобы реагировать, когда пользователь щелкает элемент карты, например маркер.
myMap.MapElementClick += (sender, args) =>
{
foreach (var element in args.MapElements)
{
if (element is MapIcon clickedIcon)
{
// Handle the clicked icon
}
}
};
Обработка ошибок службы карты
Подпишитесь на событие MapServiceErrorOccurred, чтобы выявлять проблемы при взаимодействии с картографическим сервисом, такие как недействительный или отсутствующий MapServiceToken.
myMap.MapServiceErrorOccurred += (sender, args) =>
{
// Log or display the error
System.Diagnostics.Debug.WriteLine("Map service error occurred.");
};
Связанные статьи
Windows developer