Escolar Documentos
Profissional Documentos
Cultura Documentos
Arquitectura
Tres capas
Hardware (GPS, WIFI, Radio GSM)
Distintos niveles de precisin y consumo energtico
No accesible para el desarrollador
Cdigo nativo
Se comunica directamente con la capa Hardware
Decide qu fuentes utilizar basndose en disponibilidad de datos y los
requisitos de rendimiento de la aplicacin
Tambin se comunica a travs de Internet con un servicio web de Microsoft
Interfaz manejada
DLL incluida con las Windows Phone Developer Tools (System.Device.dll)
Espacio de nombres System.Device.Location
Permite iniciar y parar el servicio, configurar el nivel de precisin y recibir
los datos de la capa nativa*
Buenas prcticas
Balance entre la exactitud de los datos de localizacin
y el consumo de batera
Relacin inversa entre exactitud y consumo de
batera
Hardware que proporciona datos menos precisos
consume menos (WiFi y radiotelefona)
GPS proporciona mayor exactitud a costa de mayor
consumo
Reglas bsicas
Utilizar menor precisin siempre que sea posible
Activar el servicio de localizacin slo cuando sea necesario y
detenerlo despus
Propiedades
MovementThreshold umbral del cambio de posicin que
debe tener lugar para que se lance el evento PositionChanged
(valor recomendado: 20 metros)
Eventos
StatusChanged cambio de estado
PositionChanged cambio de posicin
Servicio de localizacin
Estados del servicio de localizacin
Servicio de localizacin
Nivel de exactitud
El servicio de localizacin utiliza varias fuentes para
obtener los datos
Es posible que en determinados momentos algunas
de las fuentes no estn disponibles
La capa de cdigo nativo seleccionar la fuente
ms adecuada en funcin de los datos disponibles
Nuestra aplicacin nicamente deber seleccionar
el nivel de precisin de los datos de localizacin
GeoPositionAccuracy.High
GeoPositionAccuracy.Low
GeocordinateWatcher watcher = new
GeocordinateWatcher(GeoPositionAccuracy.Low);
2. Directiva Using:
using System.Device.Location
watcher.Stop();
}
if (watcher == null)
{
watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High);
watcher.MovementThreshold = 20;
switch (e.Status)
watcher.StatusChanged += new
EventHandler<GeoPositionStatusChangedEventArgs>(watcher_Statu
sChanged);
{
case GeoPositionStatus.Disabled:
if (watcher.Permission == GeoPositionPermission.Denied)
watcher.PositionChanged += new
EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(watc
her_PositionChanged);
}
watcher.Start();
break;
case GeoPositionStatus.Initializing:
btnIniciar.IsEnabled = false;
break;
case GeoPositionStatus.NoData:
txtLatitud.Text =
e.Position.Location.Latitude.ToString("0.000");
btnPararServicioLocalizacion.IsEnabled = true;
break;
txtLongitud.Text =
e.Position.Location.Longitude.ToString("0.000");
case GeoPositionStatus.Ready:
break;
}
}
Control BingMaps
1. Crear una cuenta de desarrollador
https://www.bingmapsportal.com/
3. Agregamos la referencia
xmlns:map="clr-namespace:Microsoft.Phone.Controls.
Maps;assembly=Microsoft.Phone.Controls.Maps
4. Insertamos el control
<map:Map Name="miMapa" CredentialsProvider="AwQh_41-o1yv1GpwaI3IG7ryv7eAlbWjsZFxJbYJVr_7GzHg2Rze"></map:Map>
Control BingMaps
Cambiar el tipo de vista:
miMapa.Mode = new RoadMode();
miMapa.Mode = new AerialMode();
Cambiar el zoom:
if (miMapa.ZoomLevel < 20)
miMapa.ZoomLevel++;
if (miMapa.ZoomLevel > 1)
miMapa.ZoomLevel--;
Aadir Pushpin:
Pushpin pin = new Pushpin();
pin.Content = "Aqu";
pin.Background = new SolidColorBrush(Colors.Orange);
pin.Location = coord;
miMapa.SetView(coord, 14);//indico las coordenadas y el zoom
miMapa.Children.Add(pin);
Control BingMaps
Recursos
Centro de desarrollo de WP7 en MSDN
http://msdn.microsoft.com/es-es/windowsphone/default.aspx
AppHub
http://create.msdn.com/
Windows Phone Developer Blog
http://windowsteamblog.com/windows_phone/b/wpdev
MobileNUG
http://www.mobilenug.es
Forums
http://forums.create.msdn.com/forums/