2D, 3D 및 Streetside 뷰가 있는 지도 표시Display 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.

Map 샘플 을 다운로드 하 여이 가이드에 설명 된 일부 기능을 사용해 보세요.Download the map sample to try out some the features described in this guide.

배치에 지도 표시Display map in a placecard

사용자를 표시 하는 데 사용 하는 사용자를 표시 하는 데 사용 하는 사용자를 UI 요소 또는 사용자가 사용 하는 응용 프로그램의 영역 아래 또는 UI 요소에 대 한 합니다.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. 지도 컨트롤은도로 지도, 항공, 3D, 보기, 방향, 검색 결과 및 트래픽을 표시할 수 있습니다.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. 지도에는 3D 보기, 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 페이지에 지도를 표시 합니다.Display a map on a XAML page by adding a MapControl. 없습니다를 사용 하려면 XAML 페이지 또는 코드에서 MapControl 네임 스페이스를 선언 해야 합니다.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. 없습니다 를 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

없습니다 및 map services를 사용 하려면 먼저 맵 인증 키를 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 Maps 개발자 센터에서 가져온 키로 바꿉니다.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. Maps 인증 키를 가져오고 설정 하는 방법에 대 한 자세한 내용은 지도 인증 키 요청을 참조 하세요.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 속성을 지정 하거나 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로 변환할 수 없으므로 데이터 바인딩을 사용 하지 않으면 XAML 태그에서 Center 속성의 값을 지정할 수 없습니다.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. 이 제한은 없습니다 연결 된 속성에도 적용 됩니다.(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가 UI 스레드에서 호출되어야 합니다.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.

Geolocator 클래스의 Getgeopositionasync 메서드를 사용 하 여 장치 (위치가 사용 가능한 경우)의 현재 위치를 가져옵니다.Get the current location of the device (if location is available) by using the GetGeopositionAsync method of the Geolocator class. 해당 Geopoint를 얻으려면 geoposition의 Geocoordinate 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

2D 맵에 표시 되는 위치를 변경 하려면 Trysetviewasync 메서드의 오버 로드 중 하나를 호출 합니다.To change the location that appears in a 2D map, call one of the overloads of the TrySetViewAsync method. 이 메서드를 사용 하 여 가운데, 확대/확대 수준, 머리글피치의 새 값을 지정 합니다.Use that method to specify new values for Center, ZoomLevel, Heading, and Pitch. Mapanimation kind 열거에서 상수를 제공 하 여 뷰가 변경 될 때 사용할 선택적 애니메이션을 지정할 수도 있습니다.You can also specify an optional animation to use when the view changes by providing a constant from the MapAnimationKind enumeration.

3D 지도의 위치를 변경 하려면 대신 TrySetSceneAsync 메서드를 사용 합니다.To change the location of a 3D map, use the TrySetSceneAsync method instead. 자세한 내용은 Display 항공 3d views를 참조 하세요.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.

  • 센터 속성을 설정 하 여 지도의 중심 을 지리적 점으로 설정 합니다.Set the center of the map to a geographic point by setting the Center property.
  • 확대/축소 수준 속성을 1에서 20 사이의 값으로 설정 하 여 지도의 확대/축소 수준을 설정 합니다.Set the zoom level of the map by setting the ZoomLevel property to a value between 1 and 20.
  • 머리글 속성을 설정 하 여 지도의 회전 을 설정 합니다. 여기에는 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

없습니다의 다음 속성 값을 설정 하 여도로 및 랜드마크 같은 지도 기능을 표시 하거나 숨깁니다.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.

    참고

    건물을 표시 하거나 숨길 수는 있지만 3 차원으로 표시 되는 것을 방지할 수는 없습니다.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 를 추가 하 여 지도에 구동 경로 를 표시 합니다.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.

없습니다에 압정, SHAPES 및 XAML 컨트롤을 표시 하는 방법에 대 한 자세한 내용은 map의 관심 지점 (Poi) 표시를 참조 하세요.For info about how to display pushpins, shapes, and XAML controls in the MapControl, see Display points of interest (POI) on a map.

Streetside 보기 표시Display 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. 컨트롤의 오른쪽 위 모퉁이에 있는 X 를 클릭 하 여 Streetside 보기를 닫은 후 원래 맵은 변경 되지 않은 상태로 유지 됩니다.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 view를 지 원하는 경우 FindNearbyAsync를 호출 하 여 지정 된 위치 근처에 StreetsidePanorama 를 만듭니다.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. 근처의 파노라마를 찾았으면 맵 컨트롤의 Customexperience 속성에 대해 StreetsideExperience 를 만듭니다.If a nearby panorama was found, create a StreetsideExperience for the map control's CustomExperience property.

이 예제에서는 이전 이미지와 비슷한 Streetside view를 표시 하는 방법을 보여 줍니다.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();            
   }
}
## 항공 3D 뷰 표시Display aerial 3D views

Mapscene 클래스를 사용 하 여 지도의 3d 큐브 뷰를 지정 합니다.Specify a 3D perspective of the map by using the MapScene class. 지도 장면은 지도에 표시 되는 3D 뷰를 나타냅니다.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 위치 다이어그램

지도 화면에서 건물과 기타 기능을 3D에 표시 하려면 지도 컨트롤의 Style 속성을 mapstyle로 설정 합니다.To make buildings and other features on the map surface appear in 3D, set the map control's Style property to MapStyle.Aerial3DWithRoads. Aerial3DWithRoads 스타일이 있는 3d 뷰의 예입니다.This is an example of a 3D view with the Aerial3DWithRoads style.

3d 맵 보기의 예입니다.

3D 뷰를 표시 하려면To display a 3D view

  1. Is3DSupported를 확인 하 여 장치에서 3d 보기가 지원 되는지 확인 합니다.Determine if 3D views are supported on the device by checking Is3DSupported.
  2. 3D 뷰가 지원 되는 경우 지도 컨트롤의 Style 속성을 mapstyle로 설정 합니다.If 3D views is supported, set the map control's Style property to MapStyle.Aerial3DWithRoads.
  3. Createfromlocationandradius , createfromcamera등의 많은 createfrom 메서드 중 하나를 사용 하 여 mapscene 개체를 만듭니다.Create a MapScene object using one of the many CreateFrom methods, such as CreateFromLocationAndRadius and CreateFromCamera.
  4. TrySetSceneAsync 를 호출 하 여 3d 뷰를 표시 합니다.Call TrySetSceneAsync to display the 3D view. Mapanimation kind 열거에서 상수를 제공 하 여 뷰가 변경 될 때 사용할 선택적 애니메이션을 지정할 수도 있습니다.You can also specify an optional animation to use when the view changes by providing a constant from the MapAnimationKind enumeration.

이 예에서는 3D 뷰를 표시 하는 방법을 보여 줍니다.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

없습니다의 다음 메서드를 호출 하 여 맵의 위치에 대 한 정보를 가져옵니다.Get info about locations on the map by calling the following methods of the MapControl.

  • TryGetLocationFromOffset 메서드-지도 컨트롤의 뷰포트에 지정 된 지점에 해당 하는 지리적 위치를 가져옵니다.TryGetLocationFromOffset method - Get the geographic location that corresponds to the specified point in the viewport of the Map control.
  • GetOffsetFromLocation method-지정 된 지리적 위치에 해당 하는 지도 컨트롤의 뷰포트에 있는 점을 가져옵니다.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

없습니다의 다음 이벤트를 처리 하 여 맵에서 사용자 입력 제스처를 처리 합니다.Handle user input gestures on the map by handling the following events of the MapControl. 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 이벤트를 처리 하 여 map이 로드 되는지 아니면 완전히 로드 되는지 확인 합니다.Determine whether the map is loading or completely loaded by handling the control's LoadingStatusChanged event.

사용자 또는 앱이 없습니다의 다음 이벤트를 처리 하 여 맵의 설정을 변경 하는 경우 발생 하는 변경 내용을 처리 합니다.Handle changes that happen when the user or the app changes the settings of the map by handling the following events of the MapControl. Maps에 대 한 지침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.

  • 지도 요소를 사용 하 여 지도 장면에 관심 위치를 포함 합니다. 모든 추가 정보는 지도 장면을 오버레이 하는 임시 UI로 표시 될 수 있습니다.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.