×
Namespaces

Variants
Actions

Nuevos Lanzadores Nokia Here!

From Nokia Developer Wiki
Jump to: navigation, search
SignpostIcon HereMaps 99.png
SignpostIcon XAML 40.png
WP Metro Icon WP8.png
Article Metadata
Code ExampleTested with
SDK: Windows Phone 8.0 SDK
Devices(s): Nokia Lumia 520
Compatibility
Platform(s):
Windows Phone 8
Article
Created: jsuarezruiz (20 Jul 2013)
Last edited: hamishwillee (21 Nov 2013)

Nokia Here

El servicio de navegación Nokia HERE es uno de los servicios estrellas de Nokia que nutre a algunas de las aplicaciones más importantes integradas en el sistema de todo Windows Phone 8 como son:

  • HERE Drive. Navegador GPS que porporciona instrucciones de navegación paso a paso.
  • HERE Maps. Servicio de mapas.
  • HERE Transit. Facilita información relacionada con el transporte público.

Los desarrolladores de Windows Phone tenemos a nuestra disposición APIs de mapas bastante versátiles y potentes gracias a las APIs de mapas que nos permitían integrar funciones de navegación en nuestras aplicaciones. Sin embargo, echábamos en falta la posibilidad de utilizar lanzadores que pudiesen conectar con el servicio Nokia HERE.

Recordamos que los lanzadores nos permiten ejecutar una determianda acción en el sistema como por ejemplo, abrir la Store o enviar un email. Son una manera fácil y sencilla de otorgar a nuestras aplicaciones la capacidad de realizar tareas pesadas del sistema con apenas unas líneas de código.

Abrir Here Drive para facilitar una ruta en coche o a pie al usuario sería una funcionalidad increíble, ¿verdad?. Pues si a ti también te lo parece sigue leyendo porque vamos a analizar las posibilidades de la nueva API, HERE Launchers, ¿te apuntas?.

Obtener la API

Para poder utilizar los lanzadores de la nueva API lo primero que debemos hacer es… obtener la API!. Para ello nos bastará con descargar las librerías del siguiente enlace.

Los Lanzadores

Contamos con el siguiente listado de lanzadores:

  • ExploremapsShowMapTask: Inicia los mapas de Nokia HERE con un punto establecido en el mapa.
  • ExploremapsShowPlaceTask: Permite mostrar una posición en el mapa con detalles del lugar.
  • ExploremapsSearchPlacesTask: Inicia los mapas con la vista de búsqueda. Podemos buscar lugares por uno o más términos.
  • ExploremapsExplorePlacesTask: Inicia los mapas con los lugares cercanos a la posición actual.
  • DirectionsRouteDestinationTask: Permite mostrar una ruta hacia un destino.
  • GuidanceWalkTask: Indica la mejor ruta hacia un destino a pie.
  • GuidanceDriveTask: Indica la mejor ruta hacia un destino en coche.
  • PlacesShowDetailsByLocationTask: Muestra los lugares a ver en un lugar dado en el mapa.
  • PlacesShowDetailsByIdHrefTask: Muestra los lugares a ver en un lugar dado en el mapa.
  • PublicTransitRouteDestinationTask: Permite indicar la ruta a un destino utilizando transporte público utilizando HERE Transit.
  • PublicTransitSearchStopsTask: Utiliza la posición actual (no hay parámetros) para determinar las paradas de transportes públicos cercanas.

Interesante, ¿cierto?. Contamos con bastante variedad que nos facilitan una gran cantidad de opciones. Para aprender a utilizar cada uno de los nuevos lanzadores de la nueva API Here Launchers como siempre, crearemos un ejemplo práctico. La plantilla seleccionada será “Windows Phone Application” para simplificar al máximo el ejemplo.

Lo primero que vamos a hacer es añadir la librería previamente descargada para poder trabajar con los nuevos lanzadores.

Hacemos clic derecho sobre las referencias del proyecto y seleccionamos la opción, nueva referencia. A continuación, buscamos la referencia que hemos descargado, la seleccionamos y aceptamos para añadirla al proyecto:

Herelauncher.png

Preparados para comenzar. Empezamos construyendo la simple interfaz que nos permitirá probar los múltiples lanzadores. Agregamos dentro del Grid principal de la página MainPage.xaml:

  <StackPanel>
<Button x:Name="btnDirectionsRouteDestinationTask" Content="DirectionsRouteDestinationTask"/>
<Button x:Name="btnExploremapsExplorePlacesTask" Content="ExploremapsExplorePlacesTask"/>
<Button x:Name="btnGuidanceWalkTask" Content="GuidanceWalkTask"/>
<Button x:Name="btnPlacesShowDetailsByIdHrefTask" Content="PlacesShowDetailsByIdHrefTask"/>
<Button x:Name="btnPlacesShowDetailsByLocationTask" Content="PlacesShowDetailsByLocationTask"/>
<Button x:Name="btnPublicTransitRouteDestinationTask" Content="PublicTransitRouteDestinationTask"/>
<Button x:Name="btnExploremapsSearchPlacesTask" Content="ExploremapsSearchPlacesTask"/>
<Button x:Name="btnExploremapsShowPlaceTask" Content="ExploremapsShowPlaceTask"/>
<Button x:Name="btnExploremapsShowMapTask" Content="ExploremapsShowMapTask"/>
</StackPanel>

Añadimos el manejador del evento Click de cada botón:

  <StackPanel>
<Button x:Name="btnDirectionsRouteDestinationTask" Content="DirectionsRouteDestinationTask" Click="btnDirectionsRouteDestinationTask_Click"/>
<Button x:Name="btnExploremapsExplorePlacesTask" Content="ExploremapsExplorePlacesTask" Click="btnExploremapsExplorePlacesTask_Click"/>
<Button x:Name="btnGuidanceWalkTask" Content="GuidanceWalkTask" Click="btnGuidanceWalkTask_Click"/>
<Button x:Name="btnPlacesShowDetailsByIdHrefTask" Content="PlacesShowDetailsByIdHrefTask" Click="btnPlacesShowDetailsByIdHrefTask_Click"/>
<Button x:Name="btnPlacesShowDetailsByLocationTask" Content="PlacesShowDetailsByLocationTask" Click="btnPlacesShowDetailsByLocationTask_Click"/>
<Button x:Name="btnPublicTransitRouteDestinationTask" Content="PublicTransitRouteDestinationTask" Click="btnPublicTransitRouteDestinationTask_Click"/>
<Button x:Name="btnExploremapsSearchPlacesTask" Content="ExploremapsSearchPlacesTask" Click="btnExploremapsSearchPlacesTask_Click"/>
<Button x:Name="btnExploremapsShowPlaceTask" Content="ExploremapsShowPlaceTask" Click="btnExploremapsShowPlaceTask_Click"/>
<Button x:Name="btnExploremapsShowMapTask" Content="ExploremapsShowMapTask" Click="btnExploremapsShowMapTask_Click"/>
</StackPanel>

Y en el code-behind:

 private void btnDirectionsRouteDestinationTask_Click(object sender, RoutedEventArgs e)
{
 
}
 
private void btnExploremapsExplorePlacesTask_Click(object sender, RoutedEventArgs e)
{
 
}
 
private void btnGuidanceWalkTask_Click(object sender, RoutedEventArgs e)
{
 
}
 
private void btnPlacesShowDetailsByIdHrefTask_Click(object sender, RoutedEventArgs e)
{
 
}
 
private void btnPlacesShowDetailsByLocationTask_Click(object sender, RoutedEventArgs e)
{
 
}
 
private void btnPublicTransitRouteDestinationTask_Click(object sender, RoutedEventArgs e)
{
 
}
 
private void btnExploremapsSearchPlacesTask_Click(object sender, RoutedEventArgs e)
{
 
}
 
private void btnExploremapsShowPlaceTask_Click(object sender, RoutedEventArgs e)
{
 
}
 
private void btnExploremapsShowMapTask_Click(object sender, RoutedEventArgs e)
{
 
}

Antes de añadir la lógica con lanzadores a cada uno de los botones debemos añadir el siguiente using:

 using Nokia.Phone.HereLaunchers;

Nos centramos para comenzar en el Lanzador DirectionsRouteDestinationTask. Este lanzador nos permite abrir la aplicación de mapas para indicar una ruta. El único parámetro obligatorio con el que contamos es el destino, Destination de tipo GeoCoordinate. Si no indicamos el origen (Origin) se toma la posición actual, es un campo opcional:

 DirectionsRouteDestinationTask routeTask = new DirectionsRouteDestinationTask();
routeTask.Origin = new GeoCoordinate(LatitudSevilla, LongitudSevilla);
routeTask.Destination = new GeoCoordinate(LatitudMadrid, LongitudMadrid);
 
routeTask.Show();

Dado que a lo largo del ejemplo vamos a utilizar en múltiples ocasiones al menos un par de coordenadas en el mapa, para facilitar la tarea hemos creado un par de constantes (las coordenadas son aproximadas, su objetivo es de apoyo a entender los lanzadores):

 private const double LatitudSevilla = 37.2;
private const double LongitudSevilla = -6;
private const double LatitudMadrid = 40.4;
private const double LongitudMadrid = -3.7;
private const int zoom = 10;

Continuamos con el lanzador ExploremapsExplorePlacesTask. Permite abrir los mapas mostrando los lugares de interés cercanos a un punto. El punto es un parámetro opcional, si no se indica se utiliza geolocalización para determinar el punto. Lo podemos establecer tambien mediante la propiedad Location de tipo GeoCoordinate. También podemos utilizar un parámetro opcional de tipo colección, Category, que se utiliza para indicar los tipos de lugares que se van a mostrar. Las categorías vienen definidas dentro de la clase Nokia.Phone.HereLaunchers.PlaceCategoryId:

 ExploremapsExplorePlacesTask searchMap = new ExploremapsExplorePlacesTask();
searchMap.Location = new GeoCoordinate(LatitudSevilla, LongitudSevilla);
searchMap.Category.Add(Nokia.Phone.HereLaunchers.PlaceCategoryId.shopping);
 
searchMap.Show();

GuidanceWalkTask inicia la aplicación de mapas habilitando la navegación a pie. Tiene un parámetro obligatorio de tipo GeoCoordinate, Destination, utilizado para indicar el destino. El punto B lo definimos con la propiedad Destination mientras que punto de origen A se toma automáticamente mediante geolocalización. Contamos con un parámetro extra opcional de tipo string, Title, que nos permite indicar el título del destino:

GuidanceWalkTask walkTo = new GuidanceWalkTask(); 
walkTo.Destination = new GeoCoordinate(LatitudSevilla, LongitudSevilla);
walkTo.Title = "Sevilla";
walkTo.Show();

PlacesShowDetailsByIdHrefTask abre la aplicación de mapas mostrando los lugares a ver alrededor de un punto dado. El punto dado lo especificamos ya sea bien con la propiedad Id (Nokia Place Id) de tipo string o con la propiedad Href (Nokia Place Href):

 PlacesShowDetailsByIdHrefTask placeTask = new PlacesShowDetailsByIdHrefTask();
placeTask.Id = "276u33dc-10ee9c030bc042e6a6e8e0ad56985be2";
 
placeTask.Show();

Continuamos con el lanzador PlacesShowDetailsByLocationTask. Muestra los lugares de interés a ver en un punto definido por la propiedad obligatoria Location de tipo GeoCoordinate:

 PlacesShowDetailsByLocationTask showPlace = new PlacesShowDetailsByLocationTask();
showPlace.Location = new GeoCoordinate(LatitudSevilla, LongitudSevilla);
showPlace.Title = "Sevilla";
 
showPlace.Show();

PublicTransitRouteDestinationTask, nos permite abrir la aplicación de transporte, Nokia Transit, para indicar una ruta hacia un punto dado. El único parámetro obligatorio es la propiedad Destination de tipo GeoCoordinate.

Opcionalmente podemos indicar:

  • Origin: Propiedad de tipo GeoCoordinate que podemos utilizar para indicar el punto de origen. Si no la establecemos el punto de origen se obtiene mediante geolocalización.
  • DestinationTitle: Propiedad de tipo string utilizada para indicar el destino en la ruta.
  • OriginTitle: Propiedad de tipo string utilizada para indicar el origen en la ruta.
  • ArrivalTime: Propiedad de tipo DateTime utilizada para indicar la hora de llegada al destino.
  • DepartureTime: Propiedad de tipo DateTime utilizada para indicar la fecha de salida. Si no se indica se utiliza la fecha actual del teléfono.
 PublicTransitRouteDestinationTask JourneyTask = new PublicTransitRouteDestinationTask();
JourneyTask.Origin = new GeoCoordinate(LatitudSevilla, LongitudSevilla);
JourneyTask.Destination = new GeoCoordinate(LatitudSevilla + 1, LongitudSevilla + 1);
JourneyTask.ArrivalTime = DateTime.Now.AddHours(2);
JourneyTask.DepartureTime = DateTime.Now;
JourneyTask.OriginTitle = "Sevilla";
JourneyTask.DestinationTitle = "Destino";
 
JourneyTask.Show();

ExploremapsSearchPlacesTask, inicia la aplicación de mapas con la vista de búsqueda activa. Cuenta con dos propiedades obligatorias:

  • Location: Propiedad de tipo GeoCoordinate para indicar el lugar donde realizaremos la búsqueda de lugares.
  • SearchTerm: La propiedad principal, cadena que indica el término utilizado en la búsqueda.
 ExploremapsSearchPlacesTask searchMap = new ExploremapsSearchPlacesTask();
searchMap.Location = new GeoCoordinate(LatitudSevilla, LongitudSevilla);
searchMap.SearchTerm = "Restaurante";
 
searchMap.Show();

Continuamos con ExploremapsShowPlaceTask, abre la aplicación de mapas con un punto definido en el mismo. La propiedad principal es Location de tipo GeoCoordinate que nos permite fijar el punto. Opcionalmente podemos definir el título a mostrar en el lugar definido mediante la propiedad Title e incluso el nivel del zoom con la propiedad Zoom que espera un entero definido entre 1.0 y 20.0:

 ExploremapsShowPlaceTask showPlace = new ExploremapsShowPlaceTask();
showPlace.Location = new GeoCoordinate(LatitudSevilla, LongitudSevilla);
showPlace.Zoom = zoom;
showPlace.Title = "Sevilla";
 
showPlace.Show();

Por último, ExploremapsShowMapTask que también nos permite fijar un lugar en el mapa. Para ello podemos utilizar la propiedad Location de tipo GeoCoordinate o bien la propiedad ViewPort de tipo LocationRectangle. Opcionalmente podemos definir el nivel de zoom con la propiedad Zoom (1.0 – 20.0):

 ExploremapsShowMapTask showMap = new ExploremapsShowMapTask();
showMap.Location = new GeoCoordinate(LatitudSevilla, LongitudSevilla);
showMap.Zoom = zoom;
 
showMap.Show();
This page was last modified on 21 November 2013, at 09:57.
81 page views in the last 30 days.
×