Slides of my Techdays 2015 presentation on Mapping and Locations in Windows 10. Accompanying code can be found at https://onedrive.live.com/redir?resid=2406ABD89008AC37!658391&authkey=!ACMYvXyTtSevqic&ithint=file%2czip
3. Hello
• Joost van Schaik aka LocalJoost
• Senior (Business Apps) developer
• 23 jaar in (Geo)-ICT
• Windows Platform Development MVP
• ‘Unofficial Maps MVP’
• Voormalig Nokia Developer Champion
• 5 open sources libraries, 2 nog actief
9. Agenda
• What’s new
• Basis kaart manipulatie
• Tekenen op de kaart
• Geofencing
• Geocoding, Routing
• Location Tracking
• 3D
• Tile sets
10.
11. Convergentie
Kaart vorig jaar beetje ondergeschoven kindje
Nu:
• Eén component
• Eén API
Met dank aan Universal Windows Platform apps
12. Nieuw
• Eén API en component – wel weer een nieuw control
• Windows.UI.Xaml.Controls.Maps.MapControl
• In principe: UWP API = Windows Phone 8.1 Universal
apps
• System wide offline maps
• MapIcons meer bruikbaar
• 3D maps
• Streetside maps
• Background location tracking
• Div kleine API uitbreidingen en wijzingen, m.n. rondom
Geolocation
13. Map service Authentication Token
“Map service ApplicationID: Map service AuthenticationToken”
• MapControl.MapServiceToken
• MapService.ServiceToken
Bing Maps portal of dev portal
14. Capabilities
• ID_CAP_MAP is er niet meer
• DeviceCapability Name="location“
• Capability Name="internetClient“
• <Extension Category="windows.backgroundTasks“
EntryPoint=
"WalkingDownCanalStreet.Background.AlertTask">
<BackgroundTasks>
<Task Type="location" />
</BackgroundTasks>
</Extension>
• ToastCapable niet meer nodig
15. Demo 1 - Basis
Basis kaart manipulatie
Tekenen punten, lijnen en vlakken
Data koppelen en opvragen
16. Basis
• Basis kaart manipulatie
• Vele manieren om in te zoomen
• Tekenen shapes
• MapIcon werkt nu ook
• Best effort drawing is uit te zetten
• Tip: zorg dat je icons vierkant zijn (anders klopt anchor
niet)
• Style
• Landmarks e.d.
• ADP koppeling geometrie -> object
lessons learned
18. Geofencing
“Geofencing is a technology that defines a virtual
boundary around a real-world geographical area. In
doing so, a radius of interest is established that can
trigger an action in a geo-enabled phone or other
portable electronic device.”
Thus speaketh Technopedia
http://www.techopedia.com/definition/14937/geofencing
19. Waarom?
• Notificatie als je ergens in de buurt komt
• Of als je weggaat
• Of als je kind/vriend(in)/echtgeno(o)t(e) ergens in de
buurt komt….
20. Foreground & background?
• Geofencing in actieve app
• Geofencing in background task
• Kies één van beide scenario's
22. Demo 2 - Geofencing
Restaurants in de Utrechtse Kanaalstraat
23. Geofencing
• Registratie background task
• Implicaties WinRt component (sealed,
IAsyncOperation)
• LocationTrigger: 1x per 2 minuten max
• Niet zo geschikt voor high-speed real time tracking
kleine gebieden
• Toast capable niet meer nodig in UWP!
• Capabilities/Location
• Dwell time! (default 10s)
• Alleen cirkels (?)
Lessons learned
24. En verder
• Niet bar veel gewijzigd, geofencing API was al
‘gedeeld’
• Demo geofencing trigger is nog steeds vragen om
moeilijkheden
25. Tips & tricks
• Route mode
• Meerdere korte simulaties
• Initiële positie opzetten dan pas geofences
• Verse start per test
• Scheur niet op hoge snelheid door kleine geofences
(of hoge dwell time)
niet nieuw wel belangrijk
27. Routing & tracking
• MapLocationFinder, MapRouteFinder
• (Eindelijk) weer background location tracking
• ExtendedExecutionSession
• Geoposition uit Geolocator heeft nu Geopoint
“Coordinate.Point”
• dus geen conversie
Lessons learned
29. 3D
• 3D werkt alleen met goede map modus
• 3D objecten – voeg simpelweg een Altitude toe
• Alleen bij MapIcons
• 3D map materiaal nog beperkt beschikbaar, niet in NL
• Camera!
Lessons learned
33. Tile sets
• X,Y, Zoom -> image van 256x256
• TMS
• Pre-rendered
• Snel
• Take it or leave it
• WMS
• On the fly gemaakt
• Kies zelf je lagen
• Langzamer
De wereld verdeeld in vakjes
42. ‘Food for thought’
• Tiles downloaden naar device
• Dan LocalMapTileDataSource gebruiken
• Wees lief voor map providers
• Kan illegaal zijn
43. Resumerend
• T.o.v. Windows 8.1 – vrijwel alles gewijzigd behalve
geofencing en GPS
• API = Windows Phone 8.1++ (min of meer)
• Bye bye Bing Maps control
• T.o.v. Windows Phone 8.1
• MapIcons bruikbaar
• 3D support*
• Background location tracking (yay!)
• Div kleine API uitbreidingen en wijzingen, m.n. rondom
Geolocation
• Streetside maps*
• Global offline maps
• TMS/WMS om meer kaarten te laten zien
46. Your feedback is important!
Scan the QR Code and let us know via the TechDays App.
Laat ons weten wat u van de sessie vindt via de TechDays App!
Scan de QR Code.
Bent u al lid van de Microsoft Virtual Academy?! Op MVA kunt u altijd iets
nieuws leren over de laatste technologie van Microsoft. Meld u vandaag aan
op de MVA Stand. MVA biedt 7/24 gratis online training on-demand voor IT-
Professionals en Ontwikkelaars.
Editor's Notes
3 NuGet packages
8.1 Universal, dus al achterhaald voor het uit was ;)
1.
1. Microsoft.Phone.Controls.Maps.Map Ye olde Bing Map control
2. Microsoft.Phone.Maps.Controls.Map (here maps, alleen ‘Silverlight’)
3. Windows.UI.Xaml.Maps.MapControl
4. Windows.UI.Xaml.Controls.Maps.MapControl
Als je in Windows Phone met UWP kaarten hebt gemaakt, is er niet zo heel veel anders. Heb je Silverlight of Windows 8.1 gebruikt, dan is alles anders
Demo OP WINDOWS.
Hier laten zien:
Punten, lijnen, vlakken (laatste twee toggle)
Erop klikken
Nadruk op MapIcon leggen
veel punten tekenen
Labeling
Smart display
Pitch
Rotation
Map features
Dark / light theme
Scene
Daarna Windows Phone
Code
Toon XAML
Visual State group met Adaptive trigger
Hamburger
Splitpane met alle commando’s
MapControl
C#
Geopoint – BasicGeoposition
Nogal wat manieren om in te zoomen en te pitchen
Options en theme
Icon
Image
Anchorpoint
CollisionBehaviorDesired
Z-index!
Line
GeoPath
Shape hetzelfde
Collision code
Delete stuff
MapTapped vs Tapped!
Hoe vind je de shape(s) die zijn aangeklikt
En de alfanumerieke data – Attached Dependecy Property (ouwe truuk) (MapElementData)
Even langs PointList lopen
Mapping utilities
MapElementData
MapExtent Method om view extent te verkrijgen en te zetten
Kanaalstraat in Utrechtse Wijk Lombok is de weg die de Utrechtse multi culti wijk Lombol doorsnijdt
Vroeger armoedige ‘buitenlanderwijk’, tegenwoordig weer erg hip met erg veel eettentjes
Naamgeving stamt nog duidelijk van voor de tijd van de politiek correctheid, want er is zowel een Atjeh straat als een Van Heutszstraat – governeur
Naam app NIETS van doen met een willekeurige straat in een andere stad waar heel wat anders verhandeld wordt.
Geofencing an sich – niet veel nieuws. Als je braaf naar MSFT hebt geluisterd en universal apps hebt gemaakt, ben je al heel ver.
Demo op Windows Simulator. Tja, geen location tools. Dan Windows Phone maar
Geofences aan
Background task aan
Start emulatie tools en zet locatie
Doet niets. Helaas – geofencing is totaal kapot in deze versie.
Filmpje
Opzet applicatie:
XAML: Beetje hetzelfde als vorige keer, alleen simpeler
Manifest Capabilities/Location
Methods voor zoomen en zo, niet zo spannend
AreGeoFencesEnabled
ToggleGeoFences_Toggled: altijd netjes vragen om locatie
AddFence
Daadwerkelijk maken van een Geofence.
Key (string)
Eventuele oude eerst verwijderen
Ik maak standaard 50 meter
Mask - events op enter en exit
Geen single use (iedere hit rapporteren)
Enter en exit events
Aanmaken dwelling time 1 seconde.
DrawFences
Extension methods
Background task
Run
Lees fence ‘reports’
Voor elke ‘report’ het ID
En dan bij dat ID het object zoeken.
En dan een toast.
ShowToast – gejatte code. Maak een toast notication
Helper methods for Register, Unregister and check if registered
Merk op: je kunt geen Task retourneren vanuit background task, maar wel een IAsyncOperation
Merk op – geen background task. Maar één project
Klik hamburger
Zoek route
Klik hamburger
Wacht op start route
Code uitleggen:
Eerst FindRoute
Drawing route
StartLocationTracking
ExtendedExecutionReason
Description
Reason
Revoke event
Geolocator
PositionChanged
Beetje simple, sorteer op afstand, pak dichtsbijzonder.
GetDistance method - extension
StopLocationTracking
TMS – Tile Management system. Pre-rendered
WMS – Web Map Service. Tiles worden gemaakt vanuit een database via een OGC protocol. Dus ingewikkeld. En oud.
Kan geen subclass maken van MapTileSource (dat wil niet – faalt runtime)
Hier zie je dat voor een TMS je code nodig hebt. WMS is een protocol,
Disclaimer: GoogleMapSource TOS violation. Alleen als voorbeeld
Kan geen subclass maken van MapTileSource (dat wil niet – faalt runtime)
Hier zie je dat voor een TMS je code nodig hebt. WMS is een protocol,
Disclaimer: GoogleMapSource TOS violation. Alleen als voorbeeld
Demo op Windows Simulator. Tja, geen location tools. Dan Windows Phone maar
Geofences aan
Background task aan
Start emulatie tools en zet locatie
Doet niets. Helaas – geofencing is totaal kapot in deze versie.
Filmpje
Opzet applicatie:
XAML: Beetje hetzelfde als vorige keer, alleen simpeler
Manifest Capabilities/Location
Methods voor zoomen en zo, niet zo spannend
AreGeoFencesEnabled
ToggleGeoFences_Toggled: altijd netjes vragen om locatie
AddFence
Daadwerkelijk maken van een Geofence.
Key (string)
Eventuele oude eerst verwijderen
Ik maak standaard 50 meter
Mask - events op enter en exit
Geen single use (iedere hit rapporteren)
Enter en exit events
Aanmaken dwelling time 1 seconde.
DrawFences
Extension methods
Background task
Run
Lees fence ‘reports’
Voor elke ‘report’ het ID
En dan bij dat ID het object zoeken.
En dan een toast.
ShowToast – gejatte code. Maak een toast notication
Helper methods for Register, Unregister and check if registered
Merk op: je kunt geen Task retourneren vanuit background task, maar wel een IAsyncOperation