Mostrar mapas con vistas 2D, 3D y StreetsideDisplay maps with 2D, 3D, and Streetside views

Puede mostrar un mapa en una ventana descartable ligera denominada mapa placecard o en un control de mapa destacado completo.You can show a map in light dismissable window called a map placecard or in a full featured map control.

Descargue el ejemplo de mapa para probar algunas de las características que se describen en esta guía.Download the map sample to try out some the features described in this guide.

Mostrar mapa en un placecardDisplay map in a placecard

Puede mostrar a los usuarios un mapa dentro de una ventana emergente de peso claro, debajo o al lado de un elemento de la interfaz de usuario o un área de una aplicación en la que el usuario toca.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. El mapa puede mostrar una ciudad o una dirección relacionada con la información de la aplicación.The map can show a city or address that relates to information in your app.

Este placecard muestra la ciudad de Seattle.This placecard shows the city of Seattle.

placecard que muestra la ciudad de Seattle

Este es el código que hace que Seattle aparezca en un placecard bajo un botón.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);
}

Este placecard muestra la ubicación de la aguja de espacio en Seattle.This placecard shows the location of the Space Needle in Seattle.

placecard que muestra la ubicación de la aguja de espacio

Este es el código que hace que la aguja de espacio aparezca en un placecard bajo un botón.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);
}

Mostrar mapa en un controlDisplay map in a control

Use un control de mapa para Mostrar datos de mapas enriquecidos y personalizables en la aplicación.Use a map control to show rich and customizable map data in your app. Un control de mapa puede mostrar mapas de carreteras, aéreos, 3D, vistas, direcciones, resultados de la búsqueda y tráfico.A map control can display road maps, aerial, 3D, views, directions, search results, and traffic. En un mapa se pueden mostrar indicaciones, puntos de interés y la ubicación del usuario.On a map, you can display the user's location, directions, and points of interest. También se pueden mostrar vistas aéreas en 3D, vistas Streetside, el estado del tráfico y del transporte público y negocios locales.A map can also show aerial 3D views, Streetside views, traffic, transit, and local businesses.

Usa un control de mapa si quieres un mapa dentro de la aplicación que permita a los usuarios ver información geográfica general o específica de la aplicación.Use a map control when you want a map within your app that allows users to view app-specific or general geographic information. Disponer de un control de mapa en la aplicación significa que los usuarios no tienen que salir de la misma para obtener esa información.Having a map control in your app means that users don't have to go outside your app to get that information.

Agregar un control de mapa a la aplicaciónAdd a map control to your app

Agrega la clase MapControl para mostrar un mapa en una página XAML.Display a map on a XAML page by adding a MapControl. Para usar la clase MapControl, debes declarar el espacio de nombres Windows.UI.Xaml.Controls.Maps en la página XAML o en el código.To use the MapControl, you must declare the Windows.UI.Xaml.Controls.Maps namespace in the XAML page or in your code. Si arrastras el control desde el cuadro de herramientas, esta declaración de espacio de nombres se agregará automáticamente.If you drag the control from the Toolbox, this namespace declaration is added automatically. Si agregas la clase MapControl a la página XAML manualmente, también debes agregar manualmente la declaración de espacio de nombres en la parte superior de la página.If you add the MapControl to the XAML page manually, you must add the namespace declaration manually at the top of the page.

El siguiente ejemplo muestra un control de mapa básico y configura el mapa para que muestre los controles de inclinación y zoom, además de aceptar entradas táctiles.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>

Si agregas el control de mapa en el código, debes declarar el espacio de nombres manualmente en la parte superior del archivo de código.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);

Obtener y establecer una clave de autenticación de mapasGet and set a maps authentication key

Para poder usar la clase MapControl y los servicios de mapa, debes especificar la clave de autenticación de mapas como el valor de la propiedad MapServiceToken.Before you can use MapControl and map services, you must specify the maps authentication key as the value of the MapServiceToken property. En los ejemplos anteriores, reemplaza EnterYourAuthenticationKeyHere por la clave que obtuviste en Bing Maps Developer Center.In the previous examples, replace EnterYourAuthenticationKeyHere with the key you get from the Bing Maps Developer Center. El texto Advertencia: no se especificó el elemento MapServiceToken seguirá apareciendo debajo del control hasta que se especifique la clave de autenticación de mapas.The text Warning: MapServiceToken not specified continues to appear below the control until you specify the maps authentication key. Para obtener más información sobre cómo obtener y establecer una clave de autenticación de Maps, consulte solicitar una clave de autenticación de Maps.For more info about getting and setting a maps authentication key, see Request a maps authentication key.

Establecer la ubicación de una asignaciónSet the location of a map

Señale el mapa a cualquier ubicación que desee o use la ubicación actual del usuario.Point the map to any location that you want or use the user's current location.

Establecer una ubicación inicial para el mapaSet a starting location for the map

Para establecer la ubicación que se debe mostrar en el mapa, especifica la propiedad Center de MapControl en el código o enlaza la propiedad en el marcado 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. El siguiente ejemplo muestra un mapa con la ciudad de Seattle en su centro.The following example displays a map with the city of Seattle as its center.

Nota

Dado que una cadena no se puede convertir en un geopoint, no puede especificar un valor para la propiedad Center en el marcado XAML a menos que use el enlace de datos.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. (Esta limitación se aplica también a la propiedad adjunta 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;
}

ejemplo del control de mapa.

Establecer la ubicación actual del mapaSet the current location of the map

Para poder acceder a la ubicación del usuario, la aplicación debe llamar al método RequestAccessAsync.Before your app can access the user’s location, your app must call the RequestAccessAsync method. En ese momento, la aplicación debe estar en primer plano y se debe llamar a RequestAccessAsync desde el subproceso de la interfaz de usuario.At that time, your app must be in the foreground and RequestAccessAsync must be called from the UI thread. La aplicación no puede tener acceso a los datos de ubicación hasta que el usuario conceda permiso.Until the user grants your app permission to their location, your app can't access location data.

Usa el método GetGeopositionAsync de la clase Geolocator para obtener la ubicación actual del dispositivo (si está disponible).Get the current location of the device (if location is available) by using the GetGeopositionAsync method of the Geolocator class. Para obtener el Geopoint correspondiente, usa la propiedad Point de las coordenadas geográficas de la posición geográfica.To obtain the corresponding Geopoint, use the Point property of the geoposition's geocoordinate. Para obtener más información, vea obtener la ubicación actual.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;
}

Al mostrar la ubicación del dispositivo en un mapa, tal vez te interese mostrar elementos gráficos y establecer el nivel de zoom según la exactitud de los datos de ubicación.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. Para obtener más información, consulta Directrices para aplicaciones con reconocimiento de ubicación.For more info, see Guidelines for location-aware apps.

Cambiar la ubicación del mapaChange the location of the map

Para cambiar la ubicación que aparece en un mapa 2D, llama a una de las sobrecargas del método TrySetViewAsync.To change the location that appears in a 2D map, call one of the overloads of the TrySetViewAsync method. Este método sirve para especificar nuevos valores de Center, ZoomLevel, Heading y Pitch.Use that method to specify new values for Center, ZoomLevel, Heading, and Pitch. También puedes especificar una animación opcional para usarla cuando la vista cambie. Para ello, proporciona una constante de la enumeración MapAnimationKind.You can also specify an optional animation to use when the view changes by providing a constant from the MapAnimationKind enumeration.

Para cambiar la ubicación de un mapa 3D, usa el método TrySetSceneAsync en su lugar.To change the location of a 3D map, use the TrySetSceneAsync method instead. Para obtener más información, vea Mostrar vistas 3D aéreas.For more info, see Display aerial 3D views.

Llama al método TrySetViewBoundsAsync para que se muestre el contenido de una clase GeoboundingBox en el mapa.Call the TrySetViewBoundsAsync method to display the contents of a GeoboundingBox on the map. Usa este método, por ejemplo, para mostrar una ruta o la parte de una ruta en el mapa.Use this method, for example, to display a route or a portion of a route on the map. Para obtener más información, consulta Mostrar rutas e indicaciones en un mapa.For more info, see Display routes and directions on a map.

Cambiar la apariencia de un mapaChange the appearance of a map

Para personalizar la apariencia y el funcionamiento del mapa, establezca la propiedad de hoja de estilos del control de mapa en cualquiera de los objetos MapStyleSheet existentes.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();

Mapa de estilo oscuro

También puede usar JSON para definir estilos personalizados y después usar ese JSON para crear un objeto MapStyleSheet .You can also use JSON to define custom styles and then use that JSON to create a MapStyleSheet object.

El JSON de la hoja de estilos se puede crear de forma interactiva mediante la aplicación del Editor de hojas de estilos de mapa .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""
            }
        }
    }
");

Mapa de estilo personalizado

Para obtener la referencia de entrada JSON completa, consulte referencia de hoja de estilos de mapa.For the complete JSON entry reference, see Map style sheet reference.

Puede empezar con una hoja existente y, a continuación, usar JSON para reemplazar los elementos que desee.You can start with an existing sheet and then use JSON to override any elements that you want. En este ejemplo, comienza con un estilo existente y usa JSON para cambiar solo el color de las áreas del agua.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 });

Combinar mapa de estilo

Nota

Los estilos que define en la segunda hoja de estilos reemplazan los estilos de la primera.Styles that you define in the second style sheet override the styles in the first.

Establecer orientación y perspectivaSet orientation and perspective

Acerque, aleje, gire e incline la cámara del mapa para obtener solo el ángulo adecuado para el efecto que desea.Zoom in, zoom out, rotate, and tilt the map's camera to get just the right angle for the effect that you want. Pruebe estas propiedades.Try these properties.

  • Para establecer el centro del mapa en un punto geográfico, configura la propiedad Center.Set the center of the map to a geographic point by setting the Center property.
  • Para establecer el nivel de zoom del mapa, configura la propiedad ZoomLevel con un valor que oscile entre 1 y 20 grados.Set the zoom level of the map by setting the ZoomLevel property to a value between 1 and 20.
  • Para establecer la rotación del mapa, configura la propiedad Heading, de la siguiente manera: 0 o 360 grados = Norte; 90 = Este; 180 = Sur; y 270 = Oeste.Set the rotation of the map by setting the Heading property, where 0 or 360 degrees = North, 90 = East, 180 = South, and 270 = West.
  • Para establecer la inclinación del mapa, configura la propiedad DesiredPitch con un valor que oscile entre 0 y 65 grados.Set the tilt of the map by setting the DesiredPitch property to a value between 0 and 65 degrees.

Mostrar y ocultar características de mapaShow and hide map features

Muestre u oculte características de mapa como carreteras y puntos de referencia estableciendo los valores de las siguientes propiedades de la clase MapControl.Show or hide map features such as roads and landmarks by setting the values of the following properties of the MapControl.

  • Mostrar edificios y puntos de referencia en el mapa, habilita o deshabilita la propiedad LandmarksVisible.Display buildings and landmarks on the map by enabling or disabling the LandmarksVisible property.

    Nota

    Puede mostrar u ocultar edificios, pero no puede evitar que aparezcan en tres dimensiones.You can show or hide buildings, but you can't prevent them from appearing 3 dimensions.

  • Para mostrar características para los peatones (por ejemplo, escaleras públicas) en el mapa, habilita o deshabilita la propiedad PedestrianFeaturesVisible.Display pedestrian features such as public stairs on the map by enabling or disabling the PedestrianFeaturesVisible property.

  • Para mostrar el tráfico en el mapa, habilita o deshabilita la propiedad TrafficFlowVisible.Display traffic on the map by enabling or disabling the TrafficFlowVisible property.

  • Para especificar si la marca de agua se muestra en el mapa, configura la propiedad WatermarkMode en una de las constantes de la enumeración MapWatermarkMode.Specify whether the watermark is displayed on the map by setting the WatermarkMode property to one of the MapWatermarkMode constants.

  • Para mostrar rutas en coche o a pie en el mapa, agrega una clase MapRouteView a la colección Routes del control de mapa.Display a driving or walking route on the map by adding a MapRouteView to the Routes collection of the Map control. Para obtener más información y un ejemplo, vea Mostrar rutas y direcciones en un mapa.For more info and an example, see Display routes and directions on a map.

Para obtener información sobre cómo mostrar controles de marcadores, formas y XAML en la clase MapControl, consulta el artículo Mostrar puntos de interés en un mapa.For info about how to display pushpins, shapes, and XAML controls in the MapControl, see Display points of interest (POI) on a map.

Mostrar vistas de StreetsideDisplay Streetside views

Una vista de Streetside es una perspectiva en el nivel de calle de una ubicación que aparece encima del control de mapa.A Streetside view is a street-level perspective of a location that appears on top of the map control.

ejemplo de vista de Streetside del control de mapa.

Ten en cuenta que la experiencia en el "interior" de la vista de Streetside es diferente del mapa que se mostró en un principio en el control de mapa.Consider the experience "inside" the Streetside view separate from the map originally displayed in the map control. Por ejemplo, al cambiar la ubicación en la vista de Streetside no cambia la ubicación o el aspecto del mapa que subyace bajo la vista de Streetside.For example, changing the location in the Streetside view does not change the location or appearance of the map "under" the Streetside view. Tras cerrar la vista de Streetside (haciendo clic en la X de la esquina superior derecha del control), no se modifica el mapa original.After you close the Streetside view (by clicking the X in the upper right corner of the control), the original map remains unchanged.

Para mostrar una vista de StreetsideTo display a Streetside view

  1. Determine si se admiten vistas de streetside en el dispositivo comprobando IsStreetsideSupported.Determine if Streetside views are supported on the device by checking IsStreetsideSupported.
  2. Si se admite la vista de streetside, cree un StreetsidePanorama cerca de la ubicación especificada llamando a FindNearbyAsync.If Streetside view is supported, create a StreetsidePanorama near the specified location by calling FindNearbyAsync.
  3. Comprueba que la clase StreetsidePanorama no sea nula; gracias a ello podrás saber si ha encontrado una panorámica cercana.Determine if a nearby panorama was found by checking if the StreetsidePanorama is not null
  4. Si la encontró, crea una clase StreetsideExperience para la propiedad CustomExperience del control de mapa.If a nearby panorama was found, create a StreetsideExperience for the map control's CustomExperience property.

Este ejemplo indica cómo mostrar una vista de Streetside similar a la imagen anterior.This example shows how to display a Streetside view similar to the previous image.

Nota:    El mapa de información general no aparecerá si el tamaño del control de mapa es demasiado pequeño.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();            
   }
}
## Mostrar vistas aéreas en 3DDisplay aerial 3D views

Usa la clase MapScene para especificar una perspectiva en 3D del mapa.Specify a 3D perspective of the map by using the MapScene class. La escena del mapa representa la vista en 3D que aparece en el mapa.The map scene represents the 3D view that appears in the map. Asimismo, la clase MapCamera representa la posición de la cámara que mostrará esta vista.The MapCamera class represents the position of the camera that would display such a view.

Diagrama de la ubicación de MapCamera para la ubicación de la escena del mapa

Para que los edificios y otras características de la superficie de mapa aparezcan en 3D, establece la propiedad Style del control de mapa en 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. Este es un ejemplo de una vista en 3D con el estilo Aerial3DWithRoads.This is an example of a 3D view with the Aerial3DWithRoads style.

ejemplo de vista de mapa en 3D.

Para mostrar una vista en 3DTo display a 3D view

  1. Determine si se admiten vistas 3D en el dispositivo comprobando Is3DSupported.Determine if 3D views are supported on the device by checking Is3DSupported.
  2. Si se admiten vistas 3D, establezca la propiedad Style del control de mapa en MapStyle. Aerial3DWithRoads.If 3D views is supported, set the map control's Style property to MapStyle.Aerial3DWithRoads.
  3. Cree un objeto MapScene mediante uno de los muchos métodos CreateFrom , como CreateFromLocationAndRadius y CreateFromCamera.Create a MapScene object using one of the many CreateFrom methods, such as CreateFromLocationAndRadius and CreateFromCamera.
  4. Llama a TrySetSceneAsync para mostrar la vista en 3D.Call TrySetSceneAsync to display the 3D view. También puedes especificar una animación opcional para usarla cuando la vista cambie. Para ello, proporciona una constante de la enumeración MapAnimationKind.You can also specify an optional animation to use when the view changes by providing a constant from the MapAnimationKind enumeration.

Este ejemplo indica cómo mostrar una vista en 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();
   }
}

Obtener información acerca de las ubicacionesGet info about locations

Para obtener información sobre las ubicaciones en el mapa, llama a los siguientes métodos de la clase MapControl.Get info about locations on the map by calling the following methods of the MapControl.

  • Método TryGetLocationFromOffset : obtenga la ubicación geográfica que corresponde al punto especificado en la ventanilla del control de mapa.TryGetLocationFromOffset method - Get the geographic location that corresponds to the specified point in the viewport of the Map control.
  • GetOffsetFromLocation: gracias a este método, puedes obtener el punto especificado en la ventanilla del control de mapa correspondiente a la ubicación geográfica especificada.GetOffsetFromLocation method - Get the point in the viewport of the Map control that corresponds to the specified geographic location.
  • IsLocationInView: gracias a este método, puedes determinar si la ubicación geográfica especificada está actualmente visible en la ventanilla del control de mapa.IsLocationInView method - Determine whether the specified geographic location is currently visible in the viewport of the Map control.
  • FindMapElementsAtOffset: gracias a este método puedes obtener los elementos del mapa ubicados en el punto que se especificó en la ventanilla del control de mapa.FindMapElementsAtOffset method - Get the elements on the map located at the specified point in the viewport of the Map control.

Controlar la interacción y los cambiosHandle interaction and changes

Debes controlar los siguientes eventos de la clase MapControl para administrar los gestos de entrada del usuario en el mapa.Handle user input gestures on the map by handling the following events of the MapControl. Obtenga información sobre la ubicación geográfica en el mapa y la posición física en la ventanilla donde se produjo el gesto comprobando los valores de las propiedades Location y Position de 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.

Para determinar si el mapa se está cargando o está totalmente cargado, administra el evento LoadingStatusChanged del control.Determine whether the map is loading or completely loaded by handling the control's LoadingStatusChanged event.

Puedes controlar los siguientes eventos de la clase MapControl para administrar los cambios que se producen cuando el usuario o la aplicación cambian la configuración del mapa.Handle changes that happen when the user or the app changes the settings of the map by handling the following events of the MapControl. Directrices para mapasGuidelines for maps

Mejores prácticas recomendadasBest practice recommendations

  • Usa suficiente espacio en pantalla (o toda ella) para mostrar el mapa, de modo que los usuarios no tengan que realizar demasiados movimientos panorámicos y zoom para ver información geográfica.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.

  • Si el mapa solo se usa para presentar una vista informativa estática, podría ser más apropiado usar uno menor.If the map is only used to present a static, informational view, then using a smaller map might be more appropriate. Si optas por un mapa estático menor, decide sus dimensiones según las necesidades: debe ser lo bastante pequeño para ahorrar espacio de pantalla y lo bastante grande para que sea legible.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.

  • Inserta los puntos de interés en la escena de mapa con elementos del mapa; cualquier información adicional puede mostrarse como una interfaz de usuario transitoria superpuesta a la escena de mapa.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.