SlideShare une entreprise Scribd logo
1  sur  50
Télécharger pour lire hors ligne
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

Contenu connexe

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

Chapitre HTML5 API avancés
Chapitre HTML5 API avancésChapitre HTML5 API avancés
Chapitre HTML5 API avancésManel Ben Sassi
 
Monitoring applicatif : Pourquoi et comment ?
Monitoring applicatif : Pourquoi et comment ?Monitoring applicatif : Pourquoi et comment ?
Monitoring applicatif : Pourquoi et comment ?Kenny Dits
 
L'Open Web en tant que pierre angulaire du développement multi-objets
L'Open Web en tant que pierre angulaire du développement multi-objetsL'Open Web en tant que pierre angulaire du développement multi-objets
L'Open Web en tant que pierre angulaire du développement multi-objetsThomas Bassetto
 
Introduction à Angular JS
Introduction à Angular JSIntroduction à Angular JS
Introduction à Angular JSAntoine Rey
 
Prometheus & Grafana - Probing and Alerting
Prometheus & Grafana - Probing and AlertingPrometheus & Grafana - Probing and Alerting
Prometheus & Grafana - Probing and AlertingDolead Engineering
 
Transitions et Animations – Donnez une nouvelle dimension à vos applications ...
Transitions et Animations – Donnez une nouvelle dimension à vos applications ...Transitions et Animations – Donnez une nouvelle dimension à vos applications ...
Transitions et Animations – Donnez une nouvelle dimension à vos applications ...Microsoft
 
SPA avec Angular et SignalR (FR)
SPA avec Angular et SignalR (FR)SPA avec Angular et SignalR (FR)
SPA avec Angular et SignalR (FR)Rui Carvalho
 
Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...
Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...
Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...SOAT
 
[AzureCamp 24 Juin 2014] Interactions en "temps réel" pour les applications W...
[AzureCamp 24 Juin 2014] Interactions en "temps réel" pour les applications W...[AzureCamp 24 Juin 2014] Interactions en "temps réel" pour les applications W...
[AzureCamp 24 Juin 2014] Interactions en "temps réel" pour les applications W...Microsoft Technet France
 
Cartographie - cas concrets et bonnes pratiques de développement
Cartographie - cas concrets et bonnes pratiques de développementCartographie - cas concrets et bonnes pratiques de développement
Cartographie - cas concrets et bonnes pratiques de développementNicolas Boonaert
 
Plateforme digitale services et technologies
Plateforme digitale   services et technologiesPlateforme digitale   services et technologies
Plateforme digitale services et technologiesWilliam Poos
 
Devoxx: Tribulation d'un développeur sur le Cloud
Devoxx: Tribulation d'un développeur sur le CloudDevoxx: Tribulation d'un développeur sur le Cloud
Devoxx: Tribulation d'un développeur sur le CloudTugdual Grall
 
Digital : Web & Mobilité
Digital : Web & MobilitéDigital : Web & Mobilité
Digital : Web & MobilitéCatalyse IT
 
Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5davrous
 
Symfony CQRS and _event_sourcing
Symfony CQRS and _event_sourcingSymfony CQRS and _event_sourcing
Symfony CQRS and _event_sourcingSymfonyMu
 
[FR] Capture vidéo avec HTML5
[FR] Capture vidéo avec HTML5[FR] Capture vidéo avec HTML5
[FR] Capture vidéo avec HTML5Thomas Bassetto
 
Partie 2: Angular
Partie 2: AngularPartie 2: Angular
Partie 2: AngularHabib Ayad
 

Similaire à L’atout cartographie en mobilité : implémentation pratique et cas concrets (20)

Chapitre HTML5 API avancés
Chapitre HTML5 API avancésChapitre HTML5 API avancés
Chapitre HTML5 API avancés
 
Monitoring applicatif : Pourquoi et comment ?
Monitoring applicatif : Pourquoi et comment ?Monitoring applicatif : Pourquoi et comment ?
Monitoring applicatif : Pourquoi et comment ?
 
L'Open Web en tant que pierre angulaire du développement multi-objets
L'Open Web en tant que pierre angulaire du développement multi-objetsL'Open Web en tant que pierre angulaire du développement multi-objets
L'Open Web en tant que pierre angulaire du développement multi-objets
 
Tsung GIS
Tsung GISTsung GIS
Tsung GIS
 
Introduction à Angular JS
Introduction à Angular JSIntroduction à Angular JS
Introduction à Angular JS
 
Prometheus & Grafana - Probing and Alerting
Prometheus & Grafana - Probing and AlertingPrometheus & Grafana - Probing and Alerting
Prometheus & Grafana - Probing and Alerting
 
Transitions et Animations – Donnez une nouvelle dimension à vos applications ...
Transitions et Animations – Donnez une nouvelle dimension à vos applications ...Transitions et Animations – Donnez une nouvelle dimension à vos applications ...
Transitions et Animations – Donnez une nouvelle dimension à vos applications ...
 
SPA avec Angular et SignalR (FR)
SPA avec Angular et SignalR (FR)SPA avec Angular et SignalR (FR)
SPA avec Angular et SignalR (FR)
 
Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...
Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...
Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...
 
[AzureCamp 24 Juin 2014] Interactions en "temps réel" pour les applications W...
[AzureCamp 24 Juin 2014] Interactions en "temps réel" pour les applications W...[AzureCamp 24 Juin 2014] Interactions en "temps réel" pour les applications W...
[AzureCamp 24 Juin 2014] Interactions en "temps réel" pour les applications W...
 
Cartographie - cas concrets et bonnes pratiques de développement
Cartographie - cas concrets et bonnes pratiques de développementCartographie - cas concrets et bonnes pratiques de développement
Cartographie - cas concrets et bonnes pratiques de développement
 
Introduction à node.js
Introduction à node.js Introduction à node.js
Introduction à node.js
 
Plateforme digitale services et technologies
Plateforme digitale   services et technologiesPlateforme digitale   services et technologies
Plateforme digitale services et technologies
 
Devoxx: Tribulation d'un développeur sur le Cloud
Devoxx: Tribulation d'un développeur sur le CloudDevoxx: Tribulation d'un développeur sur le Cloud
Devoxx: Tribulation d'un développeur sur le Cloud
 
Digital : Web & Mobilité
Digital : Web & MobilitéDigital : Web & Mobilité
Digital : Web & Mobilité
 
Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5
 
Symfony CQRS and _event_sourcing
Symfony CQRS and _event_sourcingSymfony CQRS and _event_sourcing
Symfony CQRS and _event_sourcing
 
[FR] Capture vidéo avec HTML5
[FR] Capture vidéo avec HTML5[FR] Capture vidéo avec HTML5
[FR] Capture vidéo avec HTML5
 
Html 5(1)
Html 5(1)Html 5(1)
Html 5(1)
 
Partie 2: Angular
Partie 2: AngularPartie 2: Angular
Partie 2: Angular
 

Plus de Microsoft

Uwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieuUwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieuMicrosoft
 
La Blockchain pas à PaaS
La Blockchain pas à PaaSLa Blockchain pas à PaaS
La Blockchain pas à PaaSMicrosoft
 
Tester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobileTester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobileMicrosoft
 
Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo Microsoft
 
Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.Microsoft
 
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Microsoft
 
Créer un bot de A à Z
Créer un bot de A à ZCréer un bot de A à Z
Créer un bot de A à ZMicrosoft
 
Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?Microsoft
 
Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016Microsoft
 
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Microsoft
 
Administration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsAdministration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsMicrosoft
 
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...Microsoft
 
Plan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site RecoveryPlan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site RecoveryMicrosoft
 
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Microsoft
 
Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.Microsoft
 
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Microsoft
 
Introduction à ASP.NET Core
Introduction à ASP.NET CoreIntroduction à ASP.NET Core
Introduction à ASP.NET CoreMicrosoft
 
Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?Microsoft
 
Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...Microsoft
 
Azure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursAzure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursMicrosoft
 

Plus de Microsoft (20)

Uwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieuUwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieu
 
La Blockchain pas à PaaS
La Blockchain pas à PaaSLa Blockchain pas à PaaS
La Blockchain pas à PaaS
 
Tester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobileTester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobile
 
Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo
 
Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.
 
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
 
Créer un bot de A à Z
Créer un bot de A à ZCréer un bot de A à Z
Créer un bot de A à Z
 
Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?
 
Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016
 
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
 
Administration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsAdministration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs Analytics
 
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
 
Plan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site RecoveryPlan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site Recovery
 
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
 
Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.
 
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
 
Introduction à ASP.NET Core
Introduction à ASP.NET CoreIntroduction à ASP.NET Core
Introduction à ASP.NET Core
 
Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?
 
Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...
 
Azure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursAzure Service Fabric pour les développeurs
Azure Service Fabric pour les développeurs
 

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

  • 1.
  • 2. 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
  • 4. Agenda • Contexte • Grand public : Application WP8 • Central d’appel : Application Windows 8.1 • Dépanneur : Application WP8 • Conclusions #mstechdays Code/Développement
  • 5. 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
  • 6. 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
  • 7. CONTEXTE Description de l’ensemble de l’application #mstechdays Code/Développement
  • 8. 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
  • 9. 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
  • 10. GRAND PUBLIC Application Windows Phone 8 #mstechdays Code/Développement
  • 11. 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
  • 12. 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
  • 13. 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
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. 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
  • 19. 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
  • 20. 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
  • 21. 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
  • 22. APPLICATION GRAND PUBLIC Windows Phone 8 #mstechdays Code/Développement
  • 24. Central d’appel - W8 - Fonctionnalités • Visualisation des incidents • Recherche par isochrone • Affectation des missions #mstechdays Code/Développement
  • 25. 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
  • 26. 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
  • 27. 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
  • 28. 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
  • 29. 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
  • 30. 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
  • 31. 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
  • 32. APPLICATION DE CENTRAL D’APPEL Windows 8 #mstechdays Code/Développement
  • 34. 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
  • 35. 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
  • 36. 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
  • 37. 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
  • 38. 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
  • 39. 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
  • 40. 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
  • 41. 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 …
  • 42. 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
  • 43. 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
  • 44. 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
  • 45. APPLICATION DÉPANNEUR Windows Phone 8 #mstechdays Code/Développement
  • 47. 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
  • 48. 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
  • 49. 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

Notes de l'éditeur

  1. Introduction