Отображение карт с помощью двумерных и трехмерных представлений, а также с помощью представлений StreetsideDisplay maps with 2D, 3D, and Streetside views

Карту можно показывать во всплывающем окне, называемом карточкой места, или в полнофункциональном элементе управления с картой.You can show a map in light dismissable window called a map placecard or in a full featured map control.

Загрузите пример карты, чтобы опробовать некоторые функции, описанные в данном руководстве.Download the map sample to try out some the features described in this guide.

Показ карты в карточке местаDisplay map in a placecard

Можно отобразить карту внутри облегченного всплывающего окна выше, ниже или рядом с элементом пользовательского интерфейса или области приложения, которых касается пользователь.You can show users a map inside of a light-weight pop-up window above, below or to the side of a UI element or an area of an app where the user touches. На карте можно отображать город или адрес, относящийся к информации в приложении.The map can show a city or address that relates to information in your app.

На этой карточке места показан город Сиэтл.This placecard shows the city of Seattle.

карточка места с Сиэтлом

Вот код, который показывает Сиэтл в карточке места под кнопкой.Here's the code that makes Seattle appear in a placecard below a button.

private void Seattle_Click(object sender, RoutedEventArgs e)
{
    Geopoint seattlePoint = new Geopoint
        (new BasicGeoposition { Latitude = 47.6062, Longitude = -122.3321 });

    PlaceInfo spaceNeedlePlace = PlaceInfo.Create(seattlePoint);

    FrameworkElement targetElement = (FrameworkElement)sender;

    GeneralTransform generalTransform =
        targetElement.TransformToVisual((FrameworkElement)targetElement.Parent);

    Rect rectangle = generalTransform.TransformBounds(new Rect(new Point
        (targetElement.Margin.Left, targetElement.Margin.Top), targetElement.RenderSize));

    spaceNeedlePlace.Show(rectangle, Windows.UI.Popups.Placement.Below);
}

Эта карточка места показывает расположение башни Спейс-Нидл в Сиэтле.This placecard shows the location of the Space Needle in Seattle.

карточка места с расположением спейс-нидл

Вот код, который показывает Спейс-Нидл в карточке места под кнопкой.Here's the code that makes the Space Needle appear in a placecard below a button.

private void SpaceNeedle_Click(object sender, RoutedEventArgs e)
{
    Geopoint spaceNeedlePoint = new Geopoint
        (new BasicGeoposition { Latitude = 47.6205, Longitude = -122.3493 });

    PlaceInfoCreateOptions options = new PlaceInfoCreateOptions();

    options.DisplayAddress = "400 Broad St, Seattle, WA 98109";
    options.DisplayName = "Seattle Space Needle";

    PlaceInfo spaceNeedlePlace =  PlaceInfo.Create(spaceNeedlePoint, options);

    FrameworkElement targetElement = (FrameworkElement)sender;

    GeneralTransform generalTransform =
        targetElement.TransformToVisual((FrameworkElement)targetElement.Parent);

    Rect rectangle = generalTransform.TransformBounds(new Rect(new Point
        (targetElement.Margin.Left, targetElement.Margin.Top), targetElement.RenderSize));

    spaceNeedlePlace.Show(rectangle, Windows.UI.Popups.Placement.Below);
}

Показ карты в элементе управленияDisplay map in a control

Используйте элемент управления с картой для отображения полнофункциональной и настраиваемой карты в приложении.Use a map control to show rich and customizable map data in your app. Элемент управления картой может отображать карты дорог и гибридный трехмерный вид, маршруты, результаты поиска и сведения о ситуации на дорогах.A map control can display road maps, aerial, 3D, views, directions, search results, and traffic. На карте можно показать положение пользователя, маршруты и интересные места.On a map, you can display the user's location, directions, and points of interest. Карта может также показывать трехмерный гибридный вид, представления Streetside, предоставлять сведения о ситуации на дорогах и показывать сведения о местных организациях и заведениях.A map can also show aerial 3D views, Streetside views, traffic, transit, and local businesses.

Используйте элемент управления картой, если нужно показать карту в приложении, которое позволяет пользователям просматривать сведения, зависящие от приложения или общие географические сведения.Use a map control when you want a map within your app that allows users to view app-specific or general geographic information. Наличие элемента управления картой в вашем приложении означает, что пользователям не нужно выходить из вашего приложения для получения соответствующих сведений.Having a map control in your app means that users don't have to go outside your app to get that information.

Добавление элемента управления с картой в приложениеAdd a map control to your app

Карту можно отображать на странице XAML, добавив класс MapControl.Display a map on a XAML page by adding a MapControl. Для использования MapControl необходимо объявить пространство имен Windows.UI.Xaml.Controls.Maps на странице XAML или в коде.To use the MapControl, you must declare the Windows.UI.Xaml.Controls.Maps namespace in the XAML page or in your code. Если перетащить элемент управления с панели элементов, объявление пространства имен будет добавлено автоматически.If you drag the control from the Toolbox, this namespace declaration is added automatically. Если вы добавляете MapControl на страницу XAML вручную, придется вручную добавить и объявление пространства имен в верхнюю часть страницы.If you add the MapControl to the XAML page manually, you must add the namespace declaration manually at the top of the page.

В примере ниже показано, как отобразить базовый элемент управления картой и настроить карту для отображения элементов управления масштабом и наклоном в дополнение к функции приема сенсорного ввода.The following example displays a basic map control and configures the map to display the zoom and tilt controls in addition to accepting touch inputs.

<Page
    x:Class="MapsAndLocation1.DisplayMaps"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:MapsAndLocation1"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:Maps="using:Windows.UI.Xaml.Controls.Maps"
    mc:Ignorable="d">

 <Grid x:Name="pageGrid" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

    <Maps:MapControl
       x:Name="MapControl1"            
       ZoomInteractionMode="GestureAndControl"
       TiltInteractionMode="GestureAndControl"   
       MapServiceToken="EnterYourAuthenticationKeyHere"/>

 </Grid>
</Page>

Если вы добавляете элемент управления картой в код, придется вручную добавить и объявление пространства имен в верхнюю часть файла кода.If you add the map control in your code, you must declare the namespace manually at the top of the code file.

using Windows.UI.Xaml.Controls.Maps;
...

// Add the MapControl and the specify maps authentication key.
MapControl MapControl2 = new MapControl();
MapControl2.ZoomInteractionMode = MapInteractionMode.GestureAndControl;
MapControl2.TiltInteractionMode = MapInteractionMode.GestureAndControl;
MapControl2.MapServiceToken = "EnterYourAuthenticationKeyHere";
pageGrid.Children.Add(MapControl2);

Получение и установка ключа проверки подлинности картGet and set a maps authentication key

Прежде чем использовать класс MapControl и службы карт, необходимо в качестве значения свойства MapServiceToken указать ключ проверки подлинности карт.Before you can use MapControl and map services, you must specify the maps authentication key as the value of the MapServiceToken property. В предыдущих примерах замените код EnterYourAuthenticationKeyHere ключом, полученным из Центра разработки Карт Bing.In the previous examples, replace EnterYourAuthenticationKeyHere with the key you get from the Bing Maps Developer Center. Текст Внимание! Не указан MapServiceToken будет отображаться под элементом управления, до тех пор пока вы не укажете ключ проверки подлинности карт.The text Warning: MapServiceToken not specified continues to appear below the control until you specify the maps authentication key. Дополнительные сведения о получении и установке ключа проверки подлинности карт см. в статье Запрос ключа проверки подлинности карт.For more info about getting and setting a maps authentication key, see Request a maps authentication key.

Задайте местоположение для картыSet the location of a map

Направьте карту на любое местоположение, которое требуется использовать, или текущее расположение пользователя.Point the map to any location that you want or use the user's current location.

Установите начальное местоположение для картыSet a starting location for the map

Укажите местоположение для отображения на карте, задав свойство Center класса MapControl в коде или путем привязки свойства в разметке XAML.Set the location to display on the map by specifying the Center property of the MapControl in your code or by binding the property in your XAML markup. В примере ниже показано, как отобразить карту, в центре которой расположен город Сиэтл.The following example displays a map with the city of Seattle as its center.

Примечание

Так как строку невозможно преобразовать в класс Geopoint, то, соответственно, невозможно задать значение для свойства Center в разметке XAML, если вы не используете привязку данных.Since a string can't be converted to a Geopoint, you can't specify a value for the Center property in XAML markup unless you use data binding. (Это ограничение также применяется к вложенному свойству MapControl.Location.)(This limitation also applies to the MapControl.Location attached property.)

 

protected override void OnNavigatedTo(NavigationEventArgs e)
{
   // Specify a known location.
   BasicGeoposition cityPosition = new BasicGeoposition() { Latitude = 47.604, Longitude = -122.329 };
   Geopoint cityCenter = new Geopoint(cityPosition);

   // Set the map location.
   MapControl1.Center = cityCenter;
   MapControl1.ZoomLevel = 12;
   MapControl1.LandmarksVisible = true;
}

Пример элемента управления картой.

Настройте карту в соответствии с текущим местоположениемSet the current location of the map

Перед тем как приложение сможет получить доступ к сведениям о местоположении пользователя, оно должно вызвать метод RequestAccessAsync.Before your app can access the user’s location, your app must call the RequestAccessAsync method. В этот момент ваше приложение должно находиться на переднем плане, а из потока пользовательского интерфейса должен быть вызван метод RequestAccessAsync.At that time, your app must be in the foreground and RequestAccessAsync must be called from the UI thread. До тех пор пока пользователь не предоставит вашему приложению разрешение на доступ к данным о местоположении, приложение не сможет использовать такие данные.Until the user grants your app permission to their location, your app can't access location data.

С помощью метода GetGeopositionAsync класса Geolocator получите текущее местоположение устройства (если доступна функция определения местоположения).Get the current location of the device (if location is available) by using the GetGeopositionAsync method of the Geolocator class. Чтобы получить соответствующий класс Geopoint, используйте свойство Point геокоординаты геоположения.To obtain the corresponding Geopoint, use the Point property of the geoposition's geocoordinate. Дополнительные сведения см. в статье Получение сведений о текущем местоположении.For more info, see Get current location.

// Set your current location.
var accessStatus = await Geolocator.RequestAccessAsync();
switch (accessStatus)
{
   case GeolocationAccessStatus.Allowed:

      // Get the current location.
      Geolocator geolocator = new Geolocator();
      Geoposition pos = await geolocator.GetGeopositionAsync();
      Geopoint myLocation = pos.Coordinate.Point;

      // Set the map location.
      MapControl1.Center = myLocation;
      MapControl1.ZoomLevel = 12;
      MapControl1.LandmarksVisible = true;
      break;

   case GeolocationAccessStatus.Denied:
      // Handle the case  if access to location is denied.
      break;

   case GeolocationAccessStatus.Unspecified:
      // Handle the case if  an unspecified error occurs.
      break;
}

При отображении местоположения устройства на карте рекомендуется отображать рисунки и задавать масштаб на основе точности данных о местоположении.When you display your device's location on a map, consider displaying graphics and setting the zoom level based on the accuracy of the location data. Дополнительные сведения см. в статье Руководство по приложениям с определением местонахождения.For more info, see Guidelines for location-aware apps.

Изменение местоположения на картеChange the location of the map

Чтобы изменить местоположение, отображаемое на двумерной карте, вызовите одну из перегрузок метода TrySetViewAsync.To change the location that appears in a 2D map, call one of the overloads of the TrySetViewAsync method. Используйте этот метод для определения новых значений для Center, ZoomLevel, Heading, и Pitch.Use that method to specify new values for Center, ZoomLevel, Heading, and Pitch. Кроме того, можно настроить использование дополнительной анимации при изменениях представления с помощью константы из перечисления MapAnimationKind.You can also specify an optional animation to use when the view changes by providing a constant from the MapAnimationKind enumeration.

Чтобы изменить местоположение трехмерной карты, используйте метод TrySetSceneAsync.To change the location of a 3D map, use the TrySetSceneAsync method instead. Дополнительные сведения см. в статье Отображение трехмерных гибридных представлений.For more info, see Display aerial 3D views.

Вызовите метод TrySetViewBoundsAsync, чтобы отобразить содержимое GeoboundingBox на карте.Call the TrySetViewBoundsAsync method to display the contents of a GeoboundingBox on the map. Например, с помощью этого метода можно отобразить на карте маршрут или часть маршрута.Use this method, for example, to display a route or a portion of a route on the map. Подробности см. в разделе Отображение маршрутов и направлений на карте.For more info, see Display routes and directions on a map.

Изменение внешнего вида картыChange the appearance of a map

Чтобы настроить внешний вид карты, задайте свойство StyleSheet элемента управления картой любому из существующих объектов MapStyleSheet.To customize the look and feel of the map, set the StyleSheet property of the map control to any of the existing MapStyleSheet objects.

myMap.StyleSheet = MapStyleSheet.RoadDark();

Карта в темном стиле

Можно также использовать JSON для определения пользовательских стилей и затем использовать этот JSON для создания объекта MapStyleSheet.You can also use JSON to define custom styles and then use that JSON to create a MapStyleSheet object.

JSON таблицы стилей можно создать в интерактивном режиме с помощью приложения редактора таблицы стилей карт .Style sheet JSON can be created interactively using the Map Style Sheet Editor application.

myMap.StyleSheet = MapStyleSheet.ParseFromJson(@"
    {
        ""version"": ""1.0"",
        ""settings"": {
            ""landColor"": ""#FFFFFF"",
            ""spaceColor"": ""#000000""
        },
        ""elements"": {
            ""mapElement"": {
                ""labelColor"": ""#000000"",
                ""labelOutlineColor"": ""#FFFFFF""
            },
            ""water"": {
                ""fillColor"": ""#DDDDDD""
            },
            ""area"": {
                ""fillColor"": ""#EEEEEE""
            },
            ""political"": {
                ""borderStrokeColor"": ""#CCCCCC"",
                ""borderOutlineColor"": ""#00000000""
            }
        }
    }
");

Карта в пользовательском стиле

Полный справочник по JSON см. в разделе Пример таблицы стилей карты.For the complete JSON entry reference, see Map style sheet reference.

Можно начать с существующего листа и затем использовать JSON для переопределения любых требуемых элементов.You can start with an existing sheet and then use JSON to override any elements that you want. Этот пример начинается с существующего стиля и использует JSON для изменения цвета водоемов на карте.This example, starts with an existing style and uses JSON to change only the color of water areas.

 MapStyleSheet \customSheet = MapStyleSheet.ParseFromJson(@"
    {
        ""version"": ""1.0"",
        ""elements"": {
            ""water"": {
                ""fillColor"": ""#DDDDDD""
            }
        }
    }
");

MapStyleSheet builtInSheet = MapStyleSheet.RoadDark();

myMap.StyleSheet = MapStyleSheet.Combine(new List<MapStyleSheet> { builtInSheet, customSheet });

Сочетание стилей карты

Примечание

Стили, определенные во второй таблице стилей, обладают приоритетом перед стилями в первой таблице.Styles that you define in the second style sheet override the styles in the first.

Задание ориентации и точки обзораSet orientation and perspective

Приближение, отдаление, поворот и наклон камеры карты для получения именно того угла, который необходим для вашего эффекта.Zoom in, zoom out, rotate, and tilt the map's camera to get just the right angle for the effect that you want. Попробуйте использовать следующие свойства.Try these properties.

  • Установите центр карты в географическую точку, определив свойство Center.Set the center of the map to a geographic point by setting the Center property.
  • Установите масштаб карты, присвоив значение свойству ZoomLevel от 1 до 20.Set the zoom level of the map by setting the ZoomLevel property to a value between 1 and 20.
  • Установите вращение карты, задав свойство Heading, для которого 0 или 360 градусов обозначают север, 90 — восток, 180 — юг и 270 — запад.Set the rotation of the map by setting the Heading property, where 0 or 360 degrees = North, 90 = East, 180 = South, and 270 = West.
  • Установите наклон карты, присвоив значение свойству DesiredPitch от 0 до 65 градусов.Set the tilt of the map by setting the DesiredPitch property to a value between 0 and 65 degrees.

Показ и сокрытие элементов картыShow and hide map features

Показывайте или скрывайте элементы карты, такие как дороги и ориентиры, путем установки значений следующих свойств объекта MapControl.Show or hide map features such as roads and landmarks by setting the values of the following properties of the MapControl.

  • Отобразите здания и ориентиры на карте, включив или отключив свойство LandmarksVisible.Display buildings and landmarks on the map by enabling or disabling the LandmarksVisible property.

    Примечание

    Можно показать или скрыть здания, но вы не можете предотвратить их появление в трехмерном виде.You can show or hide buildings, but you can't prevent them from appearing 3 dimensions.

  • Чтобы показать на карте объекты для пешеходов, например надземные переходы, включите или отключите свойство PedestrianFeaturesVisible.Display pedestrian features such as public stairs on the map by enabling or disabling the PedestrianFeaturesVisible property.

  • Чтобы показать на карте пробки, включите или отключите свойство TrafficFlowVisible.Display traffic on the map by enabling or disabling the TrafficFlowVisible property.

  • Чтобы указать, необходимо ли отображать водяной знак на карте, присвойте свойству WatermarkMode значение одной из констант MapWatermarkMode.Specify whether the watermark is displayed on the map by setting the WatermarkMode property to one of the MapWatermarkMode constants.

  • Чтобы показать на карте маршруты для движения пешком или на автомобиле, добавьте MapRouteView в коллекцию Routes элемента управления картой.Display a driving or walking route on the map by adding a MapRouteView to the Routes collection of the Map control. Подробности и примеры см. в разделе Отображение маршрутов и направлений на карте.For more info and an example, see Display routes and directions on a map.

Сведения о том, как отображать вешки, фигуры и элементы управления XAML в объекте MapControl, см. в статье Отображение объектов на карте.For info about how to display pushpins, shapes, and XAML controls in the MapControl, see Display points of interest (POI) on a map.

Отображение представлений StreetsideDisplay Streetside views

Представление Streetside — это перспектива уровня улицы для местоположения, отображаемая в верхней части элемента управления картой.A Streetside view is a street-level perspective of a location that appears on top of the map control.

Пример представления Streetside элемента управления картой.

Рассмотрите возможность отделения взаимодействия «внутри» представления Streetside от карты, изначально отображаемой в элементе управления картой.Consider the experience "inside" the Streetside view separate from the map originally displayed in the map control. Например, изменение расположения в представлении Streetside не изменяет расположение и внешний вид карты в представлении Streetside.For example, changing the location in the Streetside view does not change the location or appearance of the map "under" the Streetside view. После закрытия представления Streetside (с помощью значка X в правом верхнем углу элемента управления) исходная карта останется неизменной.After you close the Streetside view (by clicking the X in the upper right corner of the control), the original map remains unchanged.

Чтобы отобразить представление Streetside, выполните указанные ниже действия.To display a Streetside view

  1. Проверьте свойство IsStreetsideSupported, чтобы узнать, поддерживаются ли представления Streetside на устройстве.Determine if Streetside views are supported on the device by checking IsStreetsideSupported.
  2. Если представление Streetside поддерживается, создайте класс StreetsidePanorama возле указанного местоположения, вызвав метод FindNearbyAsync.If Streetside view is supported, create a StreetsidePanorama near the specified location by calling FindNearbyAsync.
  3. Узнайте, обнаружена ли ближайшая панорама, проверив, имеет ли класс StreetsidePanorama значение null.Determine if a nearby panorama was found by checking if the StreetsidePanorama is not null
  4. Если ближайшая панорама обнаружена, создайте объект StreetsideExperience для свойства CustomExperience элемента управления картой.If a nearby panorama was found, create a StreetsideExperience for the map control's CustomExperience property.

В этом примере показано, как отображать представление Streetside, аналогичное предыдущему изображению.This example shows how to display a Streetside view similar to the previous image.

Примечание    . Обзорная схема не отображается, если размер элемента управления картой слишком мал.Note  The overview map will not appear if the map control is sized too small.

 

private async void showStreetsideView()
{
   // Check if Streetside is supported.
   if (MapControl1.IsStreetsideSupported)
   {
      // Find a panorama near Avenue Gustave Eiffel.
      BasicGeoposition cityPosition = new BasicGeoposition() { Latitude = 48.858, Longitude = 2.295};
      Geopoint cityCenter = new Geopoint(cityPosition);
      StreetsidePanorama panoramaNearCity = await StreetsidePanorama.FindNearbyAsync(cityCenter);

      // Set the Streetside view if a panorama exists.
      if (panoramaNearCity != null)
      {
         // Create the Streetside view.
         StreetsideExperience ssView = new StreetsideExperience(panoramaNearCity);
         ssView.OverviewMapVisible = true;
         MapControl1.CustomExperience = ssView;
      }
   }
   else
   {
      // If Streetside is not supported
      ContentDialog viewNotSupportedDialog = new ContentDialog()
      {
         Title = "Streetside is not supported",
         Content ="\nStreetside views are not supported on this device.",
         PrimaryButtonText = "OK"
      };
      await viewNotSupportedDialog.ShowAsync();            
   }
}
## Отображение трехмерных гибридных представленийDisplay aerial 3D views

Задайте трехмерную перспективу карты с помощью класса MapScene.Specify a 3D perspective of the map by using the MapScene class. Сцена карты представляет трехмерное представление, отображаемое на карте.The map scene represents the 3D view that appears in the map. Класс MapCamera представляет положение камеры, отображающей такое представление.The MapCamera class represents the position of the camera that would display such a view.

Схема расположения MapCamera для расположения сцены карты

Чтобы здания и другие объекты на карте отображались в трехмерном представлении, задайте для свойства Style элемента управления картой значение MapStyle.Aerial3DWithRoads.To make buildings and other features on the map surface appear in 3D, set the map control's Style property to MapStyle.Aerial3DWithRoads. Это пример трехмерного представления со стилем Aerial3DWithRoads.This is an example of a 3D view with the Aerial3DWithRoads style.

Пример трехмерного представления карты.

Чтобы отобразить трехмерное представление, выполните указанные ниже действия.To display a 3D view

  1. Проверьте свойство Is3DSupported, чтобы узнать, поддерживаются ли трехмерные представления на устройстве.Determine if 3D views are supported on the device by checking Is3DSupported.
  2. Если трехмерные представления поддерживаются, задайте для свойства Style элемента управления картой значение MapStyle.Aerial3DWithRoads.If 3D views is supported, set the map control's Style property to MapStyle.Aerial3DWithRoads.
  3. Создайте объект MapScene с помощью одного из множества методов CreateFrom, например CreateFromLocationAndRadius и CreateFromCamera.Create a MapScene object using one of the many CreateFrom methods, such as CreateFromLocationAndRadius and CreateFromCamera.
  4. Вызовите метод TrySetSceneAsync, чтобы отобразить трехмерное представление.Call TrySetSceneAsync to display the 3D view. Кроме того, можно настроить использование дополнительной анимации при изменениях представления с помощью константы из перечисления MapAnimationKind.You can also specify an optional animation to use when the view changes by providing a constant from the MapAnimationKind enumeration.

В данном примере показано, как отображать трехмерное представление.This example shows how to display a 3D view.

private async void display3DLocation()
{
   if (MapControl1.Is3DSupported)
   {
      // Set the aerial 3D view.
      MapControl1.Style = MapStyle.Aerial3DWithRoads;

      // Specify the location.
      BasicGeoposition hwGeoposition = new BasicGeoposition() { Latitude = 43.773251, Longitude = 11.255474};
      Geopoint hwPoint = new Geopoint(hwGeoposition);

      // Create the map scene.
      MapScene hwScene = MapScene.CreateFromLocationAndRadius(hwPoint,
                                                                           80, /* show this many meters around */
                                                                           0, /* looking at it to the North*/
                                                                           60 /* degrees pitch */);
      // Set the 3D view with animation.
      await MapControl1.TrySetSceneAsync(hwScene,MapAnimationKind.Bow);
   }
   else
   {
      // If 3D views are not supported, display dialog.
      ContentDialog viewNotSupportedDialog = new ContentDialog()
      {
         Title = "3D is not supported",
         Content = "\n3D views are not supported on this device.",
         PrimaryButtonText = "OK"
      };
      await viewNotSupportedDialog.ShowAsync();
   }
}

Получении информации о местоположенияхGet info about locations

Чтобы получить информацию о местоположениях на карте, вызовите указанные ниже методы объекта MapControl.Get info about locations on the map by calling the following methods of the MapControl.

  • Метод трижетлокатионфромоффсет — получает географическое расположение, соответствующее заданной точке в окне просмотра элемента управления картой.TryGetLocationFromOffset method - Get the geographic location that corresponds to the specified point in the viewport of the Map control.
  • Метод GetOffsetFromLocation: получение в окне просмотра элемента управления картой точки, которая соответствует заданному географическому расположению.GetOffsetFromLocation method - Get the point in the viewport of the Map control that corresponds to the specified geographic location.
  • Метод IsLocationInView: определение того, отображается ли в текущий момент заданное географическое расположение в окне просмотра элемента управления картой.IsLocationInView method - Determine whether the specified geographic location is currently visible in the viewport of the Map control.
  • Метод FindMapElementsAtOffset: получение элементов на карте, расположенных в заданной точке окна просмотра элемента управления картой.FindMapElementsAtOffset method - Get the elements on the map located at the specified point in the viewport of the Map control.

Обработка взаимодействия и измененийHandle interaction and changes

Чтобы обработать жесты ввода пользователя на карте, необходимо обработать указанные ниже события объекта MapControl.Handle user input gestures on the map by handling the following events of the MapControl. Получите информацию о географическом положении на карте и физическом положении в окне просмотра, где был выполнен жест, проверив значения свойств Location и Position класса MapInputEventArgs.Get info about the geographic location on the map and the physical position in the viewport where the gesture occurred by checking the values of the Location and Position properties of the MapInputEventArgs.

Определите, загружена ли карта или только загружается, обработав событие LoadingStatusChanged элемента управления.Determine whether the map is loading or completely loaded by handling the control's LoadingStatusChanged event.

Чтобы обработать изменения, которые происходят при изменении пользователем или приложением параметров карты, необходимо обработать указанные ниже события объекта MapControl.Handle changes that happen when the user or the app changes the settings of the map by handling the following events of the MapControl. Руководство по картамGuidelines for maps

РекомендацииBest practice recommendations

  • Используйте свободное место на экране (или весь экран) для отображения карты, чтобы пользователям не приходилось постоянно сдвигать и масштабировать карту для просмотра географических сведений.Use ample screen space (or the entire screen) to display the map so that users don't have to pan and zoom excessively to view geographical information.

  • Если карта используется только для представления статического, информационного представления, то более подходящим будет использование карты меньшего размера.If the map is only used to present a static, informational view, then using a smaller map might be more appropriate. Если вы будете использовать статическую карту меньшего размера, задайте ее размеры на основании удобства использования. Используйте небольшой размер, чтобы сэкономить место на экране, но достаточный, чтобы отобразить нужную информацию.If you go with a smaller, static map, base its dimensions on usability—small enough to conserve enough screen real estate, but large enough to remain legible.

  • Укажите достопримечательности на карте, используя map elements. Любые дополнительные сведения могут быть отображены в качестве прозрачного наложения пользовательского интерфейса на карту.Embed the points of interest in the map scene using map elements; any additional information can be displayed as transient UI that overlays the map scene.