• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
L’atout cartographie en mobilité : implémentation pratique et cas concrets
 

L’atout cartographie en mobilité : implémentation pratique et cas concrets

on

  • 427 views

A travers cette session nous allons aborder les bases de l’exploitation de la cartographie au sein des périphériques Windows Phone 8 et Windows 8 pour comprendre comment exploiter ses capacités ...

A travers cette session nous allons aborder les bases de l’exploitation de la cartographie au sein des périphériques Windows Phone 8 et Windows 8 pour comprendre comment exploiter ses capacités de présentation et de visualisation avancées au sein de contrôles interactifs. Nous suivrons un cas concret et pratique que nous implémenterons en scénario de mobilité et que nous étendrons en termes de fonctionnalités à l’aide de traitements serveur spécifiques et répondre ainsi à des cas d’usage réels tels que la gestion de livraison et l’optimisation de tournée, la recherche dans des zones de chalandise, de recherche le long d’un itinéraire. Cas pratiques, architecture et implémentation technique, cette session s’adresse aux développeurs et aux décideurs souhaitant aller beaucoup plus loin et compléter l’expérience locale dans les applications mobiles.

Speakers : Jonathan Antoine (MVP), Nicolas Boonaert (MVP)

Statistics

Views

Total Views
427
Views on SlideShare
427
Embed Views
0

Actions

Likes
0
Downloads
7
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Introduction

L’atout cartographie en mobilité : implémentation pratique et cas concrets L’atout cartographie en mobilité : implémentation pratique et cas concrets Presentation Transcript

  • L'atout cartographie en mobilité implémentation pratique et cas concrets Jonathan Antoine MVP Infinite Square Nicolas Boonaert MVP Wygwam jantoine@infinitesquare.com nicolas.boonaert@wygwam.com Code/Développement
  • AGENDA #mstechdays Code/Développement
  • Agenda • Contexte • Grand public : Application WP8 • Central d’appel : Application Windows 8.1 • Dépanneur : Application WP8 • Conclusions #mstechdays Code/Développement
  • Infinite Square stand 19  Société de conseil, expertise, réalisation, formation, spécialisée dans le développement d’applications logicielles innovantes sur les technologies Microsoft  100% des consultants certifiés Microsoft, parmi lesquels 10 MVP et 2 Nokia Champions  GOLD CertifiedPartner sur 5 domaines de compétences  Centre de formation agrée #mstechdays Infinite Square aux TechDays 2014
  • Wygwam stand 40 Wygwam est un pure player Microsoft, Gold Partner délivrant des services de Conseil/Expertise, design, développement et formation à nos clients Grands Comptes, PME et éditeurs de logiciels. Société à taille humaine, innovante et fondée sur des valeurs, nos collaborateurs sont réactifs, passionnés. Wygwam vous accompagne dans ces domaines: Stratégies digitales et mobiles : Windows 8, e-commerce, applications et sites web, Windows Phone Travail collaboratif : SharePoint, Réseaux Sociaux d'Entreprise NUI, design d'interaction, Azure, BI, ALM et cartographie. #mstechdays Code/Développement
  • CONTEXTE Description de l’ensemble de l’application #mstechdays Code/Développement
  • Contexte – Présentation du scénario Grand public Windows Phone 8 #mstechdays Central d’assurance Windows 8 Code/Développement Dépanneur Windows Phone 8
  • Contexte – Un regard technique Clients applicatifs Plateforme Azure Base de données API d’exposition SQL Azure (SQL Server 2012) Hosté au sein d’un service Azure Utilisation du type géographique Instance dédiée Entity Framework Grand public Windows Phone 8 Web API Controller Central d’assurance Windows 8 Dépanneur Windows Phone 8 #mstechdays Code/Développement
  • GRAND PUBLIC Application Windows Phone 8 #mstechdays Code/Développement
  • Grand public – WP8 - Fonctionnalités • Affichage du trafic temps réel et position de l’utilisateur • Déclaration d’un incident – Mineur : l’utilisateur reste autonome – Majeur : la centrale d’assurance assiste l’utilisateur #mstechdays Code/Développement
  • Utilisation de la position courante • Configuration dans le manifest ID_CAP_LOCATION • Les coordonnées retournées sont issues du système WGS84 #mstechdays Code/Développement
  • Utilisation de la position courante • Récupération unique var geolocator = new Geolocator { DesiredAccuracyInMeters = 50 }; try { Geoposition geoposition = await geolocator.GetGeopositionAsync( maximumAge: TimeSpan.FromMinutes(5), timeout: TimeSpan.FromSeconds(10)); var coordinate = geoposition.Coordinate; } catch (Exception ex) { } #mstechdays Code/Développement
  • Utilisation de la position courante • Récupération régulière var geolocator = new Geolocator { DesiredAccuracy = PositionAccuracy.High, MovementThreshold = 100 }; geolocator.StatusChanged += (_, argsStatus) => // Pas sur le thread UI Deployment.Current.Dispatcher.BeginInvoke(() => { var gpsStatus = argsStatus.Status; }); geolocator.PositionChanged += (_, argsPosition) => { var coordinate = argsPosition.Position.Coordinate; }; #mstechdays Code/Développement
  • Affichage d’une carte • • • • Manifest ID_CAP_MAP Token du Store à indiquer Contrôle XAML classique « Map » Propriétés intéressantes – ZoomLevel – CartographicMode (Aerial, Terrain, Road, …) – LandmarksEnabled, PedestrianFeaturesEnabled #mstechdays Code/Développement
  • Affichage d’une carte – outil utile • Installer le Windows Phone Toolkit • Conversion GeoCoordinate  Geocoordinate • Ajouts simplifiés – PushPin – Localisation de l’utilisateur – Etc. #mstechdays Code/Développement
  • Manipulation d’une carte • Ajout de punaise personnalisée <toolkit:Pushpin GeoCoordinate="{Binding InterventionLocation}" Background="{StaticResource TdBlueBrush}" Visibility="{Binding IsXX,Converter={StaticResource BooleanToVisibilityConverter}}"> <Image Source="/Assets/Images/SinisterPushPinContent.png" /> </toolkit:Pushpin> • Ajout de polygones var dynamicPolyline = new MapPolygon { StrokeColor = Color.FromArgb(255, 62, 181, 50), Path = geoCoordinateCollection, }; Map.MapElements.Add(dynamicPolyline); #mstechdays Code/Développement
  • Cartes statiques • La plateforme Bing Maps propose des cartes statiques délivrées sous formes d’images • Très pratiques pour les affichages de tuiles imageUriFormat = "http://dev.virtualearth.net/REST/v1/Imagery/Map/" + "Road/" + // Type de carte "{0},{1}/" + // Coordonnées "14?" + // Zoom "mapSize={2}" + // Dimensions de l'image "&mapLayer=TrafficFlow" + // une seule valeur possible "&format=jpeg" + "&pp={0},{1};97;" + // Pushpin "&key=CeNeSontPasLesApiKeysQueTuRecherches"; #mstechdays Code/Développement
  • Cartes statiques – Epinglage sur l’accueil var ftd = new FlipTileData(){Title=«centre.Title »}; ftd.WideBackgroundImage = new Uri( string.Format( imageUriFormat, c.Location.Latitude, c.Location.Longitude, "691,336"), UriKind.Absolute); ShellTile.Create(new Uri("/Views/HomePage.xaml", UriKind.Relative), ftd, true); #mstechdays Code/Développement
  • Utilisation des protocoles d’application • Lancement de l’application de guidage – En voiture : (Lancement de Here Drive par défaut) ms-drive-to: ?destination.latitude=50.2546&destination.longitude=3.5646&destination.name=Pal ais%20des%20Congrés,Paris,France – A pied : (Lancement de Here Maps par défaut) ms-walk-to: ?destination.latitude=50.2546&destination.longitude=3.5646&destination.latitude =50,2656&destination.longitude=3,456 #mstechdays Code/Développement
  • Utilisation des protocoles d’application • Les launchers simplifiés – Disponible en ligne : https://github.com/nokia-developer/here-launchers – Package Nuget : HereLauncher – Simplifie l’utilisation des applications de Nokia : new Nokia.Phone.HereLaunchers.GuidanceDriveTask() { Destination = selectedCenter.Location.GeoCoordinate, Title = selectedCenter.Title }.Show(); #mstechdays Code/Développement
  • APPLICATION GRAND PUBLIC Windows Phone 8 #mstechdays Code/Développement
  • CENTRAL D’APPEL Application Windows 8 #mstechdays Code/Développement
  • Central d’appel - W8 - Fonctionnalités • Visualisation des incidents • Recherche par isochrone • Affectation des missions #mstechdays Code/Développement
  • Affichage d’une carte • Les solutions possibles : Contrôle Natif - C++/.Net Contrôle JavaScript - WinJS Code en C++/C#/VB.Net Code HTML+JavaScript Intégration en XAML Développement basé sur l’API JS v7 Basé sur un moteur accéléré pour le rendu Basé sur les capacités du navigateur • Le SDK .Net disponible dans la galerie : – http://bit.ly/1elE1XL #mstechdays Code/Développement
  • Recherche basée sur le temps de parcours • Appel à la plateforme Here Location Platform http://route.st.nlp.nokia.com/routing/6.2/calculateisoline.json?mo – Requête : de=fastest;car;traffic:enabled&start=geo!50.5308609,3.3846903&time =P0Y0M0DT0H15M0S – Réponse : #mstechdays Code/Développement
  • Recherche par temps de parcours • Requête à la base de données via Entity Framework et le type géographique var polygon = DbGeographyHelper.CreatePolygon(wkt); partners = ctx.Partners.Include(m => m.Incidents).Include(m => m.PartnerEquipments) .Where(i => i.Location.Intersects(polygon)).Take(limit) .ToList(); #mstechdays Code/Développement
  • Recherche par temps de parcours • Affichage de la carte – En XAML, l’ajout du contrôle : <maps:Map Credentials="BINGMAPSKEY" Width="966" MapType="Road" ShowTraffic="True" ShowBuildings="True" ShowBreadcrumb="True" ShowScaleBar="True" Height="600" x:Name="Map"></maps:Map> #mstechdays Code/Développement
  • Recherche par temps de parcours • Ajout du calque des entités : // Add a shape layer var layer = new MapShapeLayer(); this.Map.ShapeLayers.Add(layer); • Ajout du polygone : // Create and add the polygon var polygon = new MapPolygon() { Locations = locationCollection }; polygon.FillColor = Color.FromArgb(75, 50, 158, 181); polygon.Visible = true; layer.Shapes.Add(polygon); #mstechdays Code/Développement
  • Recherche par temps de parcours • Création et ajout du contour : layer.Shapes.Add(new MapPolyline() { Width = 5, Locations = locationCollection, Color = Color.FromArgb(255, 50, 158, 181), Visible = true }); • Positionnement de la vue : this.Map.SetView(new LocationRect(locationCollection)); #mstechdays Code/Développement
  • Recherche par temps de parcours • Affichage des résultats foreach (var partner in o.Partners) { Pushpin p = new Pushpin() { Text = (i++).ToString() }; MapLayer.SetPosition(p, new Location() { Latitude = partner.Latitude, Longitude = partner.Longitude }); this.Map.Children.Add(p); } #mstechdays Code/Développement
  • APPLICATION DE CENTRAL D’APPEL Windows 8 #mstechdays Code/Développement
  • DÉPANNEUR Application Windows Phone 8 #mstechdays Code/Développement
  • Background agent – Cas d’usage • Récupération et notification des missions affectées • Détection du départ après intervention sans rapport • Enregistrement de la position pour rapport en fin de journée sur les distances parcourues #mstechdays Code/Développement
  • Dépanneur - WP8 – Background Agent • L’application n’est plus désactivée • Permet de suivre le déplacement de l’utilisateur #mstechdays Code/Développement
  • Background agent – Prérequis techniques • Activer la capability LOCATION • Spécifier l’exécution en background dans le manifest <DefaultTask Name ="_default" NavigationPage="MainPage.xaml"> <BackgroundExecution> <ExecutionType Name="LocationTracking" /> </BackgroundExecution> </DefaultTask> • S’abonner aux événements du Geolocator #mstechdays Code/Développement
  • Background agent – Utilisation • Evénements du Geolocator _geoloc = new Geolocator(); _geoloc.PositionChanged += geoloc_PositionChanged; _geoloc.StatusChanged += _geoloc_StatusChanged; • Les gestionnaires d’événements sont appelés lorsque la position change même lorsque l’application n’est pas au premier plan. #mstechdays Code/Développement
  • Background agent – Calcul de la distance • Configuration du Geolocator _geoloc.DesiredAccuracyInMeters = 50; //10% _geoloc.DesiredAccuracy = PositionAccuracy.Default; // Sauvegarde batterie _geoloc.MovementThreshold = 500; // Les unités sont en mètres. _geoloc.ReportInterval = 1000; // Intervalle de notification de déplacement • Simple addition  // Possible d'utiliser la méthode "Haversine" aussi (win8). var distanceSinceLastPosition = (long)LastPositionGeoCoordinate .GetDistanceTo(args.Position.Coordinate.ToGeoCoordinate()); TotalDistanceOfTheDay += distanceSinceLastPosition; #mstechdays Code/Développement
  • Background agent – Détection du comportement • Détecter l’arrivée sur intervention if (_goingToIntervention && InterventionLocation.GetDistanceTo(e.Coordinate.ToGeoCoordinate()) <= 500) • Détecter l’oubli de rapport de fin if (_trackingExitOfIntervention && d’intervention InterventionLocation.GetDistanceTo(e.Coordinate.ToGeoCoordinate()) > 500) { _trackingExitOfIntervention =_goingToIntervention = false; // Afficher un rappel à l'utilisateur } #mstechdays Code/Développement
  • Background agent – Afficher un message • L’application est au premier plan – Message box classique dans l’interface graphique • L’application est au second plan – Toasts, Tuiles, Lockscreen, TextToSpeech… #mstechdays Code/Développement
  • Background agent – Application en premier plan • RunningInBackground sur <shell:PhoneApplicationService PhoneApplicationService RunningInBackground="PhoneApplicationService_OnRunningInBackground" /> • private void Application_Activated(object sender, ActivatedEventArgs e) Evénement Activated : premier-plan { IsRunningInBackground = false; } #mstechdays Code/Développement …
  • Background agent – Toast et message • Affichage du message concrètement const string titre = "Attention"; const string contenu = "Vous avez oublié de signaler la fin d'intervention."; if (App.IsRunningInBackground) { MessageBox.Show(contenu, titre, MessageBoxButton.OK); } else { var toast = new ShellToast { Title = titre, Content = contenu }; toast.Show(); } #mstechdays Code/Développement
  • Background agent – ça marche tout le temps ? • Coupure « automatique « : – – – – – L’économiseur de batterie s’active Une autre application GPS est lancée (Nokia Drive) La mémoire du téléphone devient insuffisante L’application fonctionne depuis 4H sans interactions de l’utilisateur L’application est quittée • Coupure manuelle – Désabonnement des handlers sur le Geolocator – Appel à la méthode « Stop » du Geolocator #mstechdays Code/Développement
  • Background agent – détection de coupure • L’événement Deactivated est levé private void Application_Deactivated(object sender, DeactivatedEventArgs e){ if (e.Reason != DeactivationReason.UserAction) new ShellToast { … }.Show(); } • La raison de la coupure est indiquée #mstechdays Code/Développement
  • APPLICATION DÉPANNEUR Windows Phone 8 #mstechdays Code/Développement
  • CONCLUSIONS #mstechdays Code/Développement
  • Conclusions • L’information géographique peut apporter une dimension importante dans de nombreuses applications • Windows Phone et Windows 8.1 offrent des réelles possibilités d’interaction et scénarii riches et de récupération d’informations • Les plateformes peuvent compléter les fonctionnalités de base pour répondre aux besoins avancés dans les applications #mstechdays Code/Développement
  • Conclusions – Pour aller plus loin • Le code des exemples : – PROCHAINEMENT • Les liens utiles : MSDN - Bing Maps for W8.1 : http://msdn.microsoft.com/en-us/library/hh846481.aspx MSDN – Map Control for WP8 : http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj207045(v=vs.105).aspx Here developer portal: http://developer.here.com/ #mstechdays Code/Développement
  • Donnez votre avis ! Depuis votre smartphone sur : http://notes.mstechdays.fr De nombreux lots à gagner toute les heures !!! Claviers, souris et jeux Microsoft… Merci de nous aider à améliorer les Techdays ! #mstechdays Code/Développement
  • Digital is business