SlideShare uma empresa Scribd logo
1 de 66
Baixar para ler offline
Nick Landry
Microsoft Senior Technical Evangelist, NY Metro
Nokia Developer Ambassador & Champion
ext-nick.landry@nokia.com
@ActiveNick – www.AgeofMobility.com
#DVLUPDAY
Developing Windows Phone Apps
with Maps and Location Services
talk2me
Chicago – April 12, 2014
Who is ActiveNick?
• Senior Technical Evangelist – Microsoft, NY Metro Audience Team
• Nokia Developer Ambassador and Champion
• Former Microsoft MVP: 2005-2014 – Windows Phone Development
• Mobile Publisher – Big Bald Apps: http://www.bigbaldapps.com
• Speaker. Blogger. Author. Tweeter. Father. Gamer
• 20+ Years of Professional Experience
• Specialties:
• Mobile Development
• Location Intelligence & Geospatial Systems
• Data Visualization, HPC, Cloud
• Mobile Game Development
• Blog: www.AgeofMobility.com
• Twitter: @ActiveNick
2005-2014
MUSIC
WINDOWS PHONE USER EXPERIENCE HARDWARE DESIGN & ENGINEERING
IMAGING SENSORCORE
LUMIA DIFFERENTIATION
Get noticed from the crowd
LOCATION MUSICSENSORCORE
Agenda
Location and
Maps on
Windows Phone 8
Introducing the new Location API
and the new Maps Controls
Overview of the GIS World
Windows Phone Runtime Location API
How to Get the Phone’s Current Location
How to Continuously Track the Phone’s Location
How to Run Location-Tracking Apps in the Background
Getting Started with the New Map Control
Specifying Map Center and Zoom
Animating Map Display Using Map Views
More than Maps & GPS…
Overview of the GIS World
What is GIS?
Maps
(Raster / Vector)
Aerial / Satellite
Imagery
Data Processing
Geocoding
Routing &
Directions
Spatial Data
(Capture, Storage,
Search)
Spatial Storage
& Search
Reporting &
Analytics
Location Services
Maps help you visualize critical business data
Business IntelligenceSupply Chain Customer Locations
70-80% of business data has a
geospatial component
Why GIS?
Why GIS + Mobile?
• Every company that has a web site needs a map of where their location is
• Better Imagery and New Perspectives
• Personalizing the Mapping Experience
• Going Mobile
• Mobile devices are location aware, generally smarter and more powerful
• Mobile devices are overtaking the PC
• The boundary between Personal Navigation Devices and Smartphones is blurring
• Social computing is inherently mobile: User location is almost always in play
• New Emerging Technologies and Techniques
• Geofencing, Background Location-Tracking, Location Based Advertisement, etc.
Geospatial Services for Developers
Key GIS Players
MicrosoftGoogle Maps Nokia Maps
TomTom
Esri
MapQuestApple Maps OpenStreetMap
Cross-Platform Solution Design
Client Platforms
GIS Providers
Location Data in
the Cloud
Windows
Azure
Google
Maps
iOS Android
Nokia &
Bing Maps
Windows
Available Geospatial Services
Nominatim
Acceptable use Policy:
1 request/s
Single thread, single
machine, no scripts,
no bulk geocoding
Attribution required
No limit version run
by MapQuest
Courtesy Limits
1 request per second
per user
Google Maps API: 25K
requests/day
Geocoding API:
2,500/day quota
Places Search API:
100K/day quota
50K transactions/ day
for mobile
5 x 50 batch
geocoding / day
10K/30-days for
evaluation
No turn-by-turn
navigation allowed
All paid services
Free base maps,
demographic maps,
reference maps,
specialty maps
Free shape files
4/16/20Microsoft
Windows Phone
Runtime Location API
Location APIs on Windows Phone 8
• .NET Location API from Windows Phone OS 7.1 is still supported
• System.Device.Location.GeoCoordinateWatcher and related classes
• New Windows Phone Runtime location API
• Accessible from managed and native code
• Improved ability for one-shot location acquisition
• Improved capabilities for location tracking
• Convergent with Windows 8 location API
ID_CAP_LOCATION Capability
• You must include the ID_CAP_LOCATION capability in your app manifest
• If you forget, calls to location APIs throw an UnauthorizedAccessException
Location Sources
GPS: +Accuracy, -Power, -Speed, -Indoors
WiFi: +/- Accuracy, +/- Power, +/- Speed,
+/- Urban Areas
Cell Towers: -Accuracy, +Power, +Speed,
-Wilderness
Controlling the Sources the Geolocation Service Uses
• You can’t!
• You can set the DesiredAccuracy property of the Geolocator object:
• PositionAccuracy.High – if you want the most accurate data available, but at the cost
of increased battery usage, network bandwidth and possibly monetary charges from
wireless network operators. Often this causes the GPS to be activated
• PositionAccuracy.Default – to optimize for power
• You can also set the DesiredAccuracyInMeters property to indicate to the Geolocation
service the desired accuracy of any results
• However, the Geolocation service determines the best location data to provide to
the application
How to Get the Phone’s Current Location
private async void OneShotLocation_Click(object sender, RoutedEventArgs e)
{
Geolocator geolocator = new Geolocator();
geolocator.DesiredAccuracyInMeters = 50;
try
{
Geoposition geoposition = await geolocator.GetGeopositionAsync(
maximumAge: TimeSpan.FromMinutes(5),
timeout: TimeSpan.FromSeconds(10) );
LatitudeTextBlock.Text = geoposition.Coordinate.Latitude.ToString("0.00");
LongitudeTextBlock.Text = geoposition.Coordinate.Longitude.ToString("0.00");
}
catch (UnauthorizedAccessException)
{
// the app does not have the right capability or the location master switch is off
StatusTextBlock.Text = "location is disabled in phone settings.";
}
}
User Consent
• Application certification requirements on user consent still the same as in 7.1
• If you are using location data just within your app, you do not need to ask explicitly for
user consent (although they give consent when they install your app)
• You only have to get user consent if you plan to make location data available to any other
service or other person:
2.7.4 If your application publishes or makes available location data obtained from the
Location Service API to any other service or other person (including advertising networks),
your application must implement a method to obtain opt-in consent. …
Location on Emulator
• Windows Phone Emulator comes with Location simulator
2
Demo 1
Get Phone Position
and Location Emulator
Location Tracking
• If your app only needs the user’s location at the current time,
use GetGeopositionAsync as already described
• Continuously tracking the user’s location drains the user’s
battery more and should only be used for apps that require it
private void TrackLocation_Click(object sender, RoutedEventArgs e)
{
if (!tracking) {
geolocator = new Geolocator();
geolocator.DesiredAccuracy = PositionAccuracy.High;
geolocator.MovementThreshold = 100; // The units are meters.
geolocator.StatusChanged += geolocator_StatusChanged;
geolocator.PositionChanged += geolocator_PositionChanged;
tracking = true;
}
else {
geolocator.PositionChanged -= geolocator_PositionChanged;
geolocator.StatusChanged -= geolocator_StatusChanged;
geolocator = null;
tracking = false;
}
}
How to Track Location
void geolocator_StatusChanged(Geolocator sender, StatusChangedEventArgs args)
{
string status = "";
switch (args.Status)
{
case PositionStatus.Disabled:
// the application does not have the right capability or the location master switch is off
status = "location is disabled in phone settings";
break;
case PositionStatus.Initializing:
// the geolocator started the tracking operation
status = "initializing";
break;
case PositionStatus.NoData:
// the location service was not able to acquire the location
status = "no data";
break;
Geolocator Status
void geolocator_StatusChanged(Geolocator sender, StatusChangedEventArgs args)
{
string status = "";
switch (args.Status)
{
case PositionStatus.Disabled:
// the application does not have the right capability or the location master switch is off
status = "location is disabled in phone settings";
break;
case PositionStatus.Initializing:
// the geolocator started the tracking operation
status = "initializing";
break;
case PositionStatus.NoData:
// the location service was not able to acquire the location
status = "no data";
break;
case PositionStatus.Ready:
Geolocator Status
void geolocator_PositionChanged(Geolocator sender, PositionChangedEventArgs args)
{
Dispatcher.BeginInvoke(() =>
{
LatitudeTextBlock.Text = args.Position.Coordinate.Latitude.ToString("0.00");
LongitudeTextBlock.Text = args.Position.Coordinate.Longitude.ToString("0.00");
});
}
Position Changed
Demo 2
Tracking Phone
Position
Enable Location Tracking in the Background
• Normally, when your user navigates away from your app, it is made dormant and all
activity – including location tracking – is suspended
• In Windows Phone 8, a location-tracking app can continue to run in the background after
the user navigates away, as long as the app continues to actively track location
• This feature enables scenarios such as an app that provides turn-by-turn directions or a
run tracker
• Edit WMAppManifest.xml using the XML (Text) Editor
• Replace <DefaultTask> element as shown
Enable Background Execution
• In App.Xaml, register an event handler for the RunningInBackground event
• This event is raised when the user navigates away from your background execution-enabled app
while you are actively tracking location
• When this event is raised, your app should stop all tasks that are not related to location tracking,
including updates to the app’s UI
<Application.ApplicationLifetimeObjects>
<!--Required object that handles lifetime events for the application-->
<shell:PhoneApplicationService
Launching="Application_Launching" Closing="Application_Closing“
Activated="Application_Activated" Deactivated="Application_Deactivated“
RunningInBackground="Application_RunningInBackground"/>
</Application.ApplicationLifetimeObjects>
Register Event Handler for RunningInBackground Event
// Static variables global to application to support tracking
public static Geolocator Geolocator { get; set; }
public static bool RunningInBackground { get; set; }
// Code to execute when the application is activated (brought to foreground)
private void Application_Activated(object sender, ActivatedEventArgs e)
{
RunningInBackground = false;
}
// Code to execute when the application is deactivated and is tracking location
private void Application_RunningInBackground(object sender, RunningInBackgroundEventArgs e)
{
RunningInBackground = true;
// Suspend all unnecessary processing such as UI updates
}
Implement RunningInBackground Event Handler
void geolocator_PositionChanged(Geolocator sender, PositionChangedEventArgs args)
{
if (!App.RunningInBackground)
{
Dispatcher.BeginInvoke(() => {
LatitudeTextBlock.Text = args.Position.Coordinate.Latitude.ToString("0.00");
LongitudeTextBlock.Text = args.Position.Coordinate.Longitude.ToString("0.00"); });
}
else
{ // DEMO purposes only: Show toast if running in background
Microsoft.Phone.Shell.ShellToast toast = new Microsoft.Phone.Shell.ShellToast();
toast.Content = args.Position.Coordinate.Latitude.ToString("0.00");
toast.Title = "Location: ";
toast.NavigationUri = new Uri("/Page2.xaml", UriKind.Relative);
toast.Show();
}
}
Do Not Update UI When Running in the Background
Example
Demo 3
Background
Location
Tracking
• As we have seen, Background Location Tracking apps continue to run in the background
• But if it is not actively tracking location when deactivated, it is made dormant as normal
• If the user launches *another* location tracking app and deactivates that, then your app will be
made dormant
• If the user launches a new instance of the app, if there is a dormant instance, that is reactivated instead
• Background Location Tracking apps get the Fast Application Resume behavior, which reactivates a
dormant application if the user launches a new copy
• The dormant instance of the app, including the history of visited app pages, is reactivated
• By default, the list of previously visited pages is cleared for these ‘Reset’ activations
• This may not be what you want…
App Lifecycle for Background Location Tracking Apps
Fast Application Resume
private void InitializePhoneApplication()
{
...
// Handle reset requests for clearing the backstack
RootFrame.Navigated += CheckForResetNavigation;
...
}
private void CheckForResetNavigation(object sender, NavigationEventArgs e)
{
// If the app has received a 'reset' navigation, then we need to check
// on the next navigation to see if the page stack should be reset
if (e.NavigationMode == NavigationMode.Reset)
RootFrame.Navigated += ClearBackStackAfterReset;
}
Clearing Previously Launched Pages on Fast App Resume
Add Logic to App.Xaml.cs to Check for Reset Navigation (Behavior Already Implemented in Project Templates)
4/16/20Microsoft3
private void InitializePhoneApplication()
{
...
// Handle reset requests for clearing the backstack
RootFrame.Navigated += CheckForResetNavigation;
...
}
private void CheckForResetNavigation(object sender, NavigationEventArgs e)
{
// If the app has received a 'reset' navigation, then we need to check
// on the next navigation to see if the page stack should be reset
if (e.NavigationMode == NavigationMode.Reset)
RootFrame.Navigated += ClearBackStackAfterReset;
}
private void ClearBackStackAfterReset(object sender, NavigationEventArgs e)
Clearing Previously Launched Pages on Fast App Resume
Add Logic to App.Xaml.cs to Check for Reset Navigation (Behavior Already Implemented in Project Templates)
4/16/20Microsoft3
Maps
Maps APIs on Windows Phone 8
• Windows Phone 8 has new Map controls, accessible in the
following namespaces:
• Microsoft.Phone.Maps
• Microsoft.Phone.Maps.Controls
• Microsoft.Phone.Maps.Services
• The Bing Maps Control is still supported, but is deprecated
• You should only use the Bing Maps Control when you upgrade
an app from Windows Phone OS 7.1 to Windows Phone 8
• Usage of the new Maps control differs from the Bing Maps control
ID_CAP_MAP Capability
• You must include the ID_CAP_MAP capability in your app manifest
• If you forget, calls to location APIs throw an UnauthorizedAccessException
• Add a Map to your UI
• In XAML:
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<maps:Map x:Name="MyMap"/>
</Grid>
• In Code:
private void CreateMap()
{
Map MyMap = new Map();
ContentPanel.Children.Add(MyMap);
}
Map Control
• By default, map displays at zoom level 1 (world view)
and centered at Lat: 0, Long: 0
• Use the Center and ZoomLevel properties to change
this, in XAML or in code
//Set the Map center by using Center property
MyMap.Center = new GeoCoordinate(47.6097, -122.3331);
//Set the map zoom by using ZoomLevel property
MyMap.ZoomLevel = 10;
Center and Zoom Level
MapViews
• It is common to move a map display from one location to another
• A new map view is defined any time the position of the map is changed as a result of panning,
zooming, rotating, or tilting
• You can use the SetView method to define a map view
• This takes the following parameters:
• Center: A GeoCoordinate object defining the center of the map view
• ZoomLevel: zoom level between 1 and 20
• Heading: specifies the directional heading that is pointing “up” on the mapin geometric degrees
between 0 and 360
• Pitch: specifies the degree to which the map is tilted as a value between 0 and 180
• BoundingRectangle: a LocationRectangle object that contains the Map control
• AnimationKind: sets the kind of animation you want to see (None, Linear or Parabolic) when the
view changes
• Set the cartographic mode of the map with the CartographicMode property
Cartographic Mode
Road (default) Aerial Hybrid Terrain
• You can display the map in a light or dark color mode by setting the ColorMode property
Light and Dark Color Modes
Light (default) Dark
Pedestrian Features and Landmarks
• You can display additional elements on your map, such as
landmarks and pedestrian features
• Set the LandmarksEnabled property to true to display
landmarks
• Set the PedestrianFeaturesEnabled to true to display
pedestrian features
• Landmarks are visible only when the ZoomLevel is 7 or higher,
and the Pitch property is 25 or higher
Demo 4
Maps Control
• Unlike the Bing Maps API, the Windows Phone
Maps API does not have a specific PushPin object
• However, you can create your own PushPins by
drawing UIElements onto a MapOverlay, then
add the MapOverlay to a MapLayer which you
add to the Map
Pushpins
4/16/20Microsoft4
private Grid CreatePushpin()
{
//Creating a Grid element.
Grid MyGrid = new Grid();
MyGrid.RowDefinitions.Add(new RowDefinition());
MyGrid.RowDefinitions.Add(new RowDefinition());
MyGrid.Background = new SolidColorBrush(Colors.Transparent);
//Creating a Rectangle
Rectangle MyRectangle = new Rectangle();
MyRectangle.Fill = new SolidColorBrush(Colors.Black);
MyRectangle.Height = 20;
MyRectangle.Width = 20;
MyRectangle.SetValue(Grid.RowProperty, 0);
MyRectangle.SetValue(Grid.ColumnProperty, 0);
//Adding the Rectangle to the Grid
MyGrid.Children.Add(MyRectangle);
Creating a Pushpin
4/16/20Microsoft4
private Grid CreatePushpin()
{
//Creating a Grid element.
Grid MyGrid = new Grid();
MyGrid.RowDefinitions.Add(new RowDefinition());
MyGrid.RowDefinitions.Add(new RowDefinition());
MyGrid.Background = new SolidColorBrush(Colors.Transparent);
//Creating a Rectangle
Rectangle MyRectangle = new Rectangle();
MyRectangle.Fill = new SolidColorBrush(Colors.Black);
MyRectangle.Height = 20;
MyRectangle.Width = 20;
MyRectangle.SetValue(Grid.RowProperty, 0);
MyRectangle.SetValue(Grid.ColumnProperty, 0);
//Adding the Rectangle to the Grid
MyGrid.Children.Add(MyRectangle);
Creating a Pushpin
4/16/20Microsoft4
private void AddMapOverlay()
{
Grid MyGrid = CreatePushpin();
//Creating a MapOverlay and adding the Grid to it.
MapOverlay MyOverlay = new MapOverlay();
MyOverlay.Content = MyGrid;
MyOverlay.GeoCoordinate = new GeoCoordinate(47.6097, -122.3331);
MyOverlay.PositionOrigin = new Point(0, 0.5);
//Creating a MapLayer and adding the MapOverlay to it
MapLayer MyLayer = new MapLayer();
MyLayer.Add(MyOverlay);
MyMap.Layers.Add(MyLayer);
}
Drawing a UIElement onto a MapLayer
Demo 5
Pushpins
New Maps Launchers
in Windows Phone 8.0
MapsTask
MapsTask makes launching the built-in Maps application easy
MapsTask mapsTask = new MapsTask();
//Omit the Center property to use the user's current
location.
mapsTask.Center = new GeoCoordinate(47.6204, -122.3493);
mapsTask.SearchTerm = "coffee";
mapsTask.ZoomLevel = 17;
mapsTask.Show();
MapsDirectionsTask
• Launching built-in Maps tasks with directions enabled is trivial too!
// Get Directions
MapsDirectionsTask mapsDirectionsTask = new MapsDirectionsTask();
// You can specify a label and a geocoordinate for the end point.
// GeoCoordinate spaceNeedleLocation = new GeoCoordinate(47.6204,-122.3493);
// LabeledMapLocation spaceNdleLML = new LabeledMapLocation("Space Needle",
// spaceNeedleLocation);
// If you set the geocoordinate parameter to null, the label parameter
// is used as a search term.
LabeledMapLocation spaceNdleLML = new LabeledMapLocation("Space Needle", null);
// If mapsDirectionsTask.Start is not set, the user's current location
// is used as start point.
mapsDirectionsTask.End = spaceNdleLML;
mapsDirectionsTask.Show();
• Use the map downloader task to enable users to download map
data for offline use
• The task launches the Maps settings application which allows
the user to select a region of map data to download
MapDownloaderTask
MapDownloaderTask mapDownloaderTask = new MapDownloaderTask();
mapDownloaderTask.Show();
• Use the map updater task to enable users to update map data
they have previously downloaded for offline use
• The task launches the Maps settings application which
immediately checks to see if there are updates available for any
previously downloaded map data
MapUpdaterTask
MapUpdaterTask mapUpdaterTask = new MapUpdaterTask();
mapUpdaterTask.Show();
Demo 6
MapsTask,
MapsDirectionsTask,
MapDownloaderTask,
MapUpdaterTask
What’s New in Maps
and Location Services
in Windows Phone 8.1
//build/ Sessions: Maps & Location Services
• Building Geo-Aware Apps with Maps and Geofencing (2014)
• http://channel9.msdn.com/Events/Build/2014/2-526
• Creating Engaging Windows Store Apps with the Bing Platform (2014)
• http://channel9.msdn.com/Events/Build/2014/2-654
• Building the Best Mapping Apps for Windows Phone (2013)
• http://aka.ms/Build2013Maps
• Using Geolocation and Geofencing in Windows Store Apps (2013)
• http://aka.ms/Build2013Geofencing
• All //build/ 2014 sessions available online:
• http://channel9.msdn.com/events/build/2014
Review
• Windows Phone Runtime location API is new in Windows Phone 8. It has the following features:
• Accessible from managed and native code
• Greater support for one-shot location acquisition
• Support for Background Location Tracking
• Convergent with Windows 8
• Use the new Maps APIs in Windows Phone 8 to develop maps-based apps, and incorporate location
and search features
• Set Center and Zoom Level
• Animate to new location and zoom using map views
• Select Road, Aerial, Hybrid or Terrain cartographic display modes
• Draw UIElements onto a MapOverlay on top of the Map
Next Steps…
Get Ready to Become a Windows Phone Developer
Download the SDK at dev.windowsphone.com
Explore the Microsoft samples and start building apps in Visual Studio
Learn More About Windows Phone Devvia Official Microsoft Videos
Windows Phone 8 Jump Start Training: http://bit.ly/wp8jump
Windows Phone 8 Dev for Absolute Beginners: http://bit.ly/wp8devAB
Check Out Additional Learning Resources
Pluralsight WP Training: www.pluralsight.com/training/Courses#windows-phone
Nokia Developer: www.developer.nokia.com
Download Additional Resources & Become an Expert
Download the Windows Phone Toolkit: phone.codeplex.com
Nokia Developer Offers: http://bit.ly/nokiadevoffers
62
1
2
3
4
Microsoft & Nokia GIS References Links
• Location for Windows Phone 8: http://bit.ly/WP8SDKloc
• Maps and Navigation for Windows Phone 8: http://bit.ly/WP8SDKmaps
• Nokia Lumia HERE APIs & HERE App Launchers: http://bit.ly/HEREAPI
• Online Training Videos
• Maps & Location Webinar (WP8 Jumpstart Series): http://bit.ly/WP8JumpMaps
• Nokia Lumia App Labs – HERE Maps & Location API: http://bit.ly/LumiaLabHERE
• Bing Maps Management Portal & Accounts Center: http://www.bingmapsportal.com
• Bing Maps REST Services: http://bit.ly/BingMapsREST
• Microsoft Bing Maps Blog: http://bit.ly/BingMapsBlog
• Ricky’s Bing Maps Blog: http://rbrundritt.wordpress.com
Samples and GeoFencing Guides
• Windows Geolocation and Geofencing SDK Samples
• http://aka.ms/WindowsGeoSamples
• Blogs and Guides
• Geofencing, start to finish guide
• http://aka.ms/GeofencingGuide
• Best Practices for geofencing apps
• http://aka.ms/GeofencingBestPractices
• Geofencing API reference
• http://aka.ms/GeofencingAPIs
Location Intelligence for Windows Store Apps
Free GIS eBook
By Rick Brundritt
Bing Map Technical Solution Professional – EMEA
• Primarily focused on Windows Store apps but good for WP8 apps too
• Chapters 5 & 6 on Bing services can be applied to WP8
• Chapter 7 features a reusable Portable Class Library (PCL) used to import
different types of spatial data, works great for WP8
• Chapter 11 on cross platform development covers WP8
Download for free at:
http://rbrundritt.wordpress.com/my-book/
Windows Phone Resources
• Nick Landry’s Blog: www.AgeofMobility.com
• Nick Landry’s Getting Started Resources: www.ageofmobility.com/?page_id=961
• Windows Phone Developer Blog: blogs.windows.com/windows_phone/b/wpdev
• Windows Phone Consumer Blog: blogs.windows.com/windows_phone/b/windowsphone
• Nokia WP Wiki: www.developer.nokia.com/Community/Wiki/Category:Windows_Phone
• Nokia Dvlup Challenges & Rewards: www.dvlup.com
• Nokia Conversations Blog: http://conversations.nokia.com
• Microsoft App Studio: http://apps.windowsstore.com
• Windows Phone Developer Magazine (online via Flipboard): http://flip.it/95YFG
• GeekChamp (WP & Win8 dev): www.geekchamp.com
• Windows Phone Central (News): www.wpcentral.com
Thank You!
Slides and demos will be posted on SlideShare (see link below)
Let me know how you liked this session. Your feedback is important and appreciated.
Slideshare: www.slideshare.net/ActiveNick
Blog: www.AgeofMobility.com
Twitter: @ActiveNick
Mobile Apps: www.bigbaldapps.com
LinkedIn: www.linkedin.com/in/activenick
Website: www.mobility42.com
Email: ext-nick.landry@nokia.com

Mais conteúdo relacionado

Mais procurados

Icinga Camp Berlin 2018 - What's evolving in icinga 2018
Icinga Camp Berlin 2018 - What's evolving in icinga 2018Icinga Camp Berlin 2018 - What's evolving in icinga 2018
Icinga Camp Berlin 2018 - What's evolving in icinga 2018Icinga
 
Bots are taking my job, so I started rollin my own
Bots are taking my job, so I started rollin my ownBots are taking my job, so I started rollin my own
Bots are taking my job, so I started rollin my ownJürgen Brüder
 
What’s New In watch OS
What’s New In watch OSWhat’s New In watch OS
What’s New In watch OSShengWen Chiou
 
Icinga Camp New York 2018 - What's evolving in icinga 2018
Icinga Camp New York 2018 - What's evolving in icinga 2018Icinga Camp New York 2018 - What's evolving in icinga 2018
Icinga Camp New York 2018 - What's evolving in icinga 2018Icinga
 
IoT Saturday PN 2019 - Eurotech
IoT Saturday PN 2019 - EurotechIoT Saturday PN 2019 - Eurotech
IoT Saturday PN 2019 - EurotechLuca Dazi
 
OSMC 2017 | Icinga 2 Multi Zone HA Setup using Ansible by Toshaan Bharvani
OSMC 2017 | Icinga 2 Multi Zone HA Setup using Ansible by Toshaan BharvaniOSMC 2017 | Icinga 2 Multi Zone HA Setup using Ansible by Toshaan Bharvani
OSMC 2017 | Icinga 2 Multi Zone HA Setup using Ansible by Toshaan BharvaniNETWAYS
 
Icinga Camp New York 2018 - Opening
Icinga Camp New York 2018 - OpeningIcinga Camp New York 2018 - Opening
Icinga Camp New York 2018 - OpeningIcinga
 

Mais procurados (8)

Icinga Camp Berlin 2018 - What's evolving in icinga 2018
Icinga Camp Berlin 2018 - What's evolving in icinga 2018Icinga Camp Berlin 2018 - What's evolving in icinga 2018
Icinga Camp Berlin 2018 - What's evolving in icinga 2018
 
Bots are taking my job, so I started rollin my own
Bots are taking my job, so I started rollin my ownBots are taking my job, so I started rollin my own
Bots are taking my job, so I started rollin my own
 
What’s New In watch OS
What’s New In watch OSWhat’s New In watch OS
What’s New In watch OS
 
Icinga Camp New York 2018 - What's evolving in icinga 2018
Icinga Camp New York 2018 - What's evolving in icinga 2018Icinga Camp New York 2018 - What's evolving in icinga 2018
Icinga Camp New York 2018 - What's evolving in icinga 2018
 
IoT Saturday PN 2019 - Eurotech
IoT Saturday PN 2019 - EurotechIoT Saturday PN 2019 - Eurotech
IoT Saturday PN 2019 - Eurotech
 
OSMC 2017 | Icinga 2 Multi Zone HA Setup using Ansible by Toshaan Bharvani
OSMC 2017 | Icinga 2 Multi Zone HA Setup using Ansible by Toshaan BharvaniOSMC 2017 | Icinga 2 Multi Zone HA Setup using Ansible by Toshaan Bharvani
OSMC 2017 | Icinga 2 Multi Zone HA Setup using Ansible by Toshaan Bharvani
 
Akka Remoting
Akka RemotingAkka Remoting
Akka Remoting
 
Icinga Camp New York 2018 - Opening
Icinga Camp New York 2018 - OpeningIcinga Camp New York 2018 - Opening
Icinga Camp New York 2018 - Opening
 

Destaque

Building a Node.js Backend in the Cloud for Android Apps
Building a Node.js Backend in the Cloud for Android AppsBuilding a Node.js Backend in the Cloud for Android Apps
Building a Node.js Backend in the Cloud for Android AppsNick Landry
 
Microsoft Tools for Android Developers
Microsoft Tools for Android DevelopersMicrosoft Tools for Android Developers
Microsoft Tools for Android DevelopersNick Landry
 
State of Union: Xamarin & Cross-Platform .NET in 2016 and Beyond
State of Union: Xamarin & Cross-Platform .NET in 2016 and BeyondState of Union: Xamarin & Cross-Platform .NET in 2016 and Beyond
State of Union: Xamarin & Cross-Platform .NET in 2016 and BeyondNick Landry
 
Building Cloud-Enabled Cross-Platform Mobile Apps in C# with Azure App Services
Building Cloud-Enabled Cross-PlatformMobile Apps in C# with Azure App ServicesBuilding Cloud-Enabled Cross-PlatformMobile Apps in C# with Azure App Services
Building Cloud-Enabled Cross-Platform Mobile Apps in C# with Azure App ServicesNick Landry
 
Hacking with the Raspberry Pi and Windows 10 IoT Core
Hacking with the Raspberry Pi and Windows 10 IoT CoreHacking with the Raspberry Pi and Windows 10 IoT Core
Hacking with the Raspberry Pi and Windows 10 IoT CoreNick Landry
 
Building a Windows 10 Game with C#, XAML and Win2D
Building a Windows 10 Game with C#, XAML and Win2DBuilding a Windows 10 Game with C#, XAML and Win2D
Building a Windows 10 Game with C#, XAML and Win2DNick Landry
 
Building Connected IoT Gadgets with Particle.io & Azure
Building Connected IoT Gadgets with Particle.io & AzureBuilding Connected IoT Gadgets with Particle.io & Azure
Building Connected IoT Gadgets with Particle.io & AzureNick Landry
 
Scaling IoT: Telemetry, Command & Control, Analytics and the Cloud
Scaling IoT: Telemetry, Command & Control, Analytics and the CloudScaling IoT: Telemetry, Command & Control, Analytics and the Cloud
Scaling IoT: Telemetry, Command & Control, Analytics and the CloudNick Landry
 
Building a Startup for the Mobile-first, Cloud-first World
Building a Startup for the Mobile-first, Cloud-first WorldBuilding a Startup for the Mobile-first, Cloud-first World
Building a Startup for the Mobile-first, Cloud-first WorldNick Landry
 
Building a Cross-Platform Mobile App Backend in the Cloud with Node.js
Building a Cross-Platform Mobile App Backend in the Cloud with Node.jsBuilding a Cross-Platform Mobile App Backend in the Cloud with Node.js
Building a Cross-Platform Mobile App Backend in the Cloud with Node.jsNick Landry
 
Beyond Cortana & Siri: Using Speech Recognition & Speech Synthesis for the Ne...
Beyond Cortana & Siri: Using Speech Recognition & Speech Synthesis for the Ne...Beyond Cortana & Siri: Using Speech Recognition & Speech Synthesis for the Ne...
Beyond Cortana & Siri: Using Speech Recognition & Speech Synthesis for the Ne...Nick Landry
 
Building Mobile Cross-Platform Apps with HTML5, jQuery Mobile & PhoneGap
Building Mobile Cross-Platform Apps with HTML5, jQuery Mobile & PhoneGapBuilding Mobile Cross-Platform Apps with HTML5, jQuery Mobile & PhoneGap
Building Mobile Cross-Platform Apps with HTML5, jQuery Mobile & PhoneGapNick Landry
 
Developing with Speech and Voice Recognition in Mobile Apps
Developing with Speech and Voice Recognition in Mobile AppsDeveloping with Speech and Voice Recognition in Mobile Apps
Developing with Speech and Voice Recognition in Mobile AppsNick Landry
 
From Oculus to HoloLens: Building Virtual & Mixed Reality Apps & Games
From Oculus to HoloLens: Building Virtual & Mixed Reality Apps & GamesFrom Oculus to HoloLens: Building Virtual & Mixed Reality Apps & Games
From Oculus to HoloLens: Building Virtual & Mixed Reality Apps & GamesNick Landry
 
Bots are the New Apps: Building with the Bot Framework & Language Understanding
Bots are the New Apps: Building with the Bot Framework & Language UnderstandingBots are the New Apps: Building with the Bot Framework & Language Understanding
Bots are the New Apps: Building with the Bot Framework & Language UnderstandingNick Landry
 
Cognitive Services: Building Smart Apps with Speech, NLP & Vision
Cognitive Services: Building Smart Apps with Speech, NLP & VisionCognitive Services: Building Smart Apps with Speech, NLP & Vision
Cognitive Services: Building Smart Apps with Speech, NLP & VisionNick Landry
 
Building Mobile Cross-Platform Apps for iOS, Android & Windows in C# with Xam...
Building Mobile Cross-Platform Apps foriOS, Android & Windows in C# with Xam...Building Mobile Cross-Platform Apps foriOS, Android & Windows in C# with Xam...
Building Mobile Cross-Platform Apps for iOS, Android & Windows in C# with Xam...Nick Landry
 
Building Mixed Reality Experiences for Microsoft HoloLens in Unity
Building Mixed Reality Experiences for Microsoft HoloLens in UnityBuilding Mixed Reality Experiences for Microsoft HoloLens in Unity
Building Mixed Reality Experiences for Microsoft HoloLens in UnityNick Landry
 

Destaque (18)

Building a Node.js Backend in the Cloud for Android Apps
Building a Node.js Backend in the Cloud for Android AppsBuilding a Node.js Backend in the Cloud for Android Apps
Building a Node.js Backend in the Cloud for Android Apps
 
Microsoft Tools for Android Developers
Microsoft Tools for Android DevelopersMicrosoft Tools for Android Developers
Microsoft Tools for Android Developers
 
State of Union: Xamarin & Cross-Platform .NET in 2016 and Beyond
State of Union: Xamarin & Cross-Platform .NET in 2016 and BeyondState of Union: Xamarin & Cross-Platform .NET in 2016 and Beyond
State of Union: Xamarin & Cross-Platform .NET in 2016 and Beyond
 
Building Cloud-Enabled Cross-Platform Mobile Apps in C# with Azure App Services
Building Cloud-Enabled Cross-PlatformMobile Apps in C# with Azure App ServicesBuilding Cloud-Enabled Cross-PlatformMobile Apps in C# with Azure App Services
Building Cloud-Enabled Cross-Platform Mobile Apps in C# with Azure App Services
 
Hacking with the Raspberry Pi and Windows 10 IoT Core
Hacking with the Raspberry Pi and Windows 10 IoT CoreHacking with the Raspberry Pi and Windows 10 IoT Core
Hacking with the Raspberry Pi and Windows 10 IoT Core
 
Building a Windows 10 Game with C#, XAML and Win2D
Building a Windows 10 Game with C#, XAML and Win2DBuilding a Windows 10 Game with C#, XAML and Win2D
Building a Windows 10 Game with C#, XAML and Win2D
 
Building Connected IoT Gadgets with Particle.io & Azure
Building Connected IoT Gadgets with Particle.io & AzureBuilding Connected IoT Gadgets with Particle.io & Azure
Building Connected IoT Gadgets with Particle.io & Azure
 
Scaling IoT: Telemetry, Command & Control, Analytics and the Cloud
Scaling IoT: Telemetry, Command & Control, Analytics and the CloudScaling IoT: Telemetry, Command & Control, Analytics and the Cloud
Scaling IoT: Telemetry, Command & Control, Analytics and the Cloud
 
Building a Startup for the Mobile-first, Cloud-first World
Building a Startup for the Mobile-first, Cloud-first WorldBuilding a Startup for the Mobile-first, Cloud-first World
Building a Startup for the Mobile-first, Cloud-first World
 
Building a Cross-Platform Mobile App Backend in the Cloud with Node.js
Building a Cross-Platform Mobile App Backend in the Cloud with Node.jsBuilding a Cross-Platform Mobile App Backend in the Cloud with Node.js
Building a Cross-Platform Mobile App Backend in the Cloud with Node.js
 
Beyond Cortana & Siri: Using Speech Recognition & Speech Synthesis for the Ne...
Beyond Cortana & Siri: Using Speech Recognition & Speech Synthesis for the Ne...Beyond Cortana & Siri: Using Speech Recognition & Speech Synthesis for the Ne...
Beyond Cortana & Siri: Using Speech Recognition & Speech Synthesis for the Ne...
 
Building Mobile Cross-Platform Apps with HTML5, jQuery Mobile & PhoneGap
Building Mobile Cross-Platform Apps with HTML5, jQuery Mobile & PhoneGapBuilding Mobile Cross-Platform Apps with HTML5, jQuery Mobile & PhoneGap
Building Mobile Cross-Platform Apps with HTML5, jQuery Mobile & PhoneGap
 
Developing with Speech and Voice Recognition in Mobile Apps
Developing with Speech and Voice Recognition in Mobile AppsDeveloping with Speech and Voice Recognition in Mobile Apps
Developing with Speech and Voice Recognition in Mobile Apps
 
From Oculus to HoloLens: Building Virtual & Mixed Reality Apps & Games
From Oculus to HoloLens: Building Virtual & Mixed Reality Apps & GamesFrom Oculus to HoloLens: Building Virtual & Mixed Reality Apps & Games
From Oculus to HoloLens: Building Virtual & Mixed Reality Apps & Games
 
Bots are the New Apps: Building with the Bot Framework & Language Understanding
Bots are the New Apps: Building with the Bot Framework & Language UnderstandingBots are the New Apps: Building with the Bot Framework & Language Understanding
Bots are the New Apps: Building with the Bot Framework & Language Understanding
 
Cognitive Services: Building Smart Apps with Speech, NLP & Vision
Cognitive Services: Building Smart Apps with Speech, NLP & VisionCognitive Services: Building Smart Apps with Speech, NLP & Vision
Cognitive Services: Building Smart Apps with Speech, NLP & Vision
 
Building Mobile Cross-Platform Apps for iOS, Android & Windows in C# with Xam...
Building Mobile Cross-Platform Apps foriOS, Android & Windows in C# with Xam...Building Mobile Cross-Platform Apps foriOS, Android & Windows in C# with Xam...
Building Mobile Cross-Platform Apps for iOS, Android & Windows in C# with Xam...
 
Building Mixed Reality Experiences for Microsoft HoloLens in Unity
Building Mixed Reality Experiences for Microsoft HoloLens in UnityBuilding Mixed Reality Experiences for Microsoft HoloLens in Unity
Building Mixed Reality Experiences for Microsoft HoloLens in Unity
 

Semelhante a Developing Windows Phone Apps with Maps and Location Services

Windows Phone 8 - 15 Location and Maps
Windows Phone 8 - 15 Location and MapsWindows Phone 8 - 15 Location and Maps
Windows Phone 8 - 15 Location and MapsOliver Scheer
 
12.Maps and Location
12.Maps and Location12.Maps and Location
12.Maps and LocationNguyen Tuan
 
Location-Based Services on Android
Location-Based Services on AndroidLocation-Based Services on Android
Location-Based Services on AndroidJomar Tigcal
 
How to use geolocation in react native apps
How to use geolocation in react native appsHow to use geolocation in react native apps
How to use geolocation in react native appsInnovationM
 
LUMIA APP LABS: HERE MAPS AND LOCATION APIS FOR WINDOWS PHONE
LUMIA APP LABS: HERE MAPS AND LOCATION APIS FOR WINDOWS PHONELUMIA APP LABS: HERE MAPS AND LOCATION APIS FOR WINDOWS PHONE
LUMIA APP LABS: HERE MAPS AND LOCATION APIS FOR WINDOWS PHONEMicrosoft Mobile Developer
 
Mobile applications chapter 6
Mobile applications chapter 6Mobile applications chapter 6
Mobile applications chapter 6Akib B. Momin
 
International Journal of Engineering Research and Development
International Journal of Engineering Research and DevelopmentInternational Journal of Engineering Research and Development
International Journal of Engineering Research and DevelopmentIJERD Editor
 
Mapping on iOS and Android, Wally McClure
Mapping on iOS and Android, Wally McClureMapping on iOS and Android, Wally McClure
Mapping on iOS and Android, Wally McClureXamarin
 
Location and API Maps in Windows Phone 8
Location and API Maps in Windows Phone 8Location and API Maps in Windows Phone 8
Location and API Maps in Windows Phone 8Antonio Pelleriti
 
Terence Barr - beyond smartphones - 24mai2011
Terence Barr  - beyond smartphones - 24mai2011Terence Barr  - beyond smartphones - 24mai2011
Terence Barr - beyond smartphones - 24mai2011Agora Group
 
Smart Way to Track the Location in Android Operating System
Smart Way to Track the Location in Android Operating SystemSmart Way to Track the Location in Android Operating System
Smart Way to Track the Location in Android Operating SystemIOSR Journals
 
Post-PC: Geolocation & Maps in the Android Ecosystem
Post-PC: Geolocation & Maps in the Android EcosystemPost-PC: Geolocation & Maps in the Android Ecosystem
Post-PC: Geolocation & Maps in the Android EcosystemMichael Genkin
 
Boldly Go Where No Man Has Gone Before. Explore Geo on iPhone & Android
Boldly Go Where No Man Has Gone Before. Explore Geo on iPhone & AndroidBoldly Go Where No Man Has Gone Before. Explore Geo on iPhone & Android
Boldly Go Where No Man Has Gone Before. Explore Geo on iPhone & AndroidBess Ho
 
Mobile Application Development-Lecture 15 & 16.pdf
Mobile Application Development-Lecture 15 & 16.pdfMobile Application Development-Lecture 15 & 16.pdf
Mobile Application Development-Lecture 15 & 16.pdfAbdullahMunir32
 
Android location based services
Android location based servicesAndroid location based services
Android location based servicesaswath babu
 
Building Mobile Cross-Platform Geospatial Apps, Nick Landry
Building Mobile Cross-Platform Geospatial Apps, Nick LandryBuilding Mobile Cross-Platform Geospatial Apps, Nick Landry
Building Mobile Cross-Platform Geospatial Apps, Nick LandryXamarin
 
How to start a turn-by-turn navigation to a destination from your Windows Pho...
How to start a turn-by-turn navigation to a destination from your Windows Pho...How to start a turn-by-turn navigation to a destination from your Windows Pho...
How to start a turn-by-turn navigation to a destination from your Windows Pho...Enzo Contini
 

Semelhante a Developing Windows Phone Apps with Maps and Location Services (20)

Core Location in iOS
Core Location in iOSCore Location in iOS
Core Location in iOS
 
Windows Phone 8 - 15 Location and Maps
Windows Phone 8 - 15 Location and MapsWindows Phone 8 - 15 Location and Maps
Windows Phone 8 - 15 Location and Maps
 
12.Maps and Location
12.Maps and Location12.Maps and Location
12.Maps and Location
 
Location-Based Services on Android
Location-Based Services on AndroidLocation-Based Services on Android
Location-Based Services on Android
 
How to use geolocation in react native apps
How to use geolocation in react native appsHow to use geolocation in react native apps
How to use geolocation in react native apps
 
LUMIA APP LABS: HERE MAPS AND LOCATION APIS FOR WINDOWS PHONE
LUMIA APP LABS: HERE MAPS AND LOCATION APIS FOR WINDOWS PHONELUMIA APP LABS: HERE MAPS AND LOCATION APIS FOR WINDOWS PHONE
LUMIA APP LABS: HERE MAPS AND LOCATION APIS FOR WINDOWS PHONE
 
Mobile applications chapter 6
Mobile applications chapter 6Mobile applications chapter 6
Mobile applications chapter 6
 
International Journal of Engineering Research and Development
International Journal of Engineering Research and DevelopmentInternational Journal of Engineering Research and Development
International Journal of Engineering Research and Development
 
Mapping on iOS and Android, Wally McClure
Mapping on iOS and Android, Wally McClureMapping on iOS and Android, Wally McClure
Mapping on iOS and Android, Wally McClure
 
Location and API Maps in Windows Phone 8
Location and API Maps in Windows Phone 8Location and API Maps in Windows Phone 8
Location and API Maps in Windows Phone 8
 
Terence Barr - beyond smartphones - 24mai2011
Terence Barr  - beyond smartphones - 24mai2011Terence Barr  - beyond smartphones - 24mai2011
Terence Barr - beyond smartphones - 24mai2011
 
Geolocation and Mapping
Geolocation and MappingGeolocation and Mapping
Geolocation and Mapping
 
Smart Way to Track the Location in Android Operating System
Smart Way to Track the Location in Android Operating SystemSmart Way to Track the Location in Android Operating System
Smart Way to Track the Location in Android Operating System
 
Find me
Find meFind me
Find me
 
Post-PC: Geolocation & Maps in the Android Ecosystem
Post-PC: Geolocation & Maps in the Android EcosystemPost-PC: Geolocation & Maps in the Android Ecosystem
Post-PC: Geolocation & Maps in the Android Ecosystem
 
Boldly Go Where No Man Has Gone Before. Explore Geo on iPhone & Android
Boldly Go Where No Man Has Gone Before. Explore Geo on iPhone & AndroidBoldly Go Where No Man Has Gone Before. Explore Geo on iPhone & Android
Boldly Go Where No Man Has Gone Before. Explore Geo on iPhone & Android
 
Mobile Application Development-Lecture 15 & 16.pdf
Mobile Application Development-Lecture 15 & 16.pdfMobile Application Development-Lecture 15 & 16.pdf
Mobile Application Development-Lecture 15 & 16.pdf
 
Android location based services
Android location based servicesAndroid location based services
Android location based services
 
Building Mobile Cross-Platform Geospatial Apps, Nick Landry
Building Mobile Cross-Platform Geospatial Apps, Nick LandryBuilding Mobile Cross-Platform Geospatial Apps, Nick Landry
Building Mobile Cross-Platform Geospatial Apps, Nick Landry
 
How to start a turn-by-turn navigation to a destination from your Windows Pho...
How to start a turn-by-turn navigation to a destination from your Windows Pho...How to start a turn-by-turn navigation to a destination from your Windows Pho...
How to start a turn-by-turn navigation to a destination from your Windows Pho...
 

Mais de Nick Landry

Designing XR Experiences with Speech & Natural Language Understanding in Unity
Designing XR Experiences with Speech & Natural Language Understandingin UnityDesigning XR Experiences with Speech & Natural Language Understandingin Unity
Designing XR Experiences with Speech & Natural Language Understanding in UnityNick Landry
 
MR + AI: Machine Learning for Language in HoloLens & VR Apps
MR + AI: Machine Learning for Language in HoloLens & VR AppsMR + AI: Machine Learning for Language in HoloLens & VR Apps
MR + AI: Machine Learning for Language in HoloLens & VR AppsNick Landry
 
Building Holographic & VR Experiences Using the Mixed Reality Toolkit for Unity
Building Holographic & VR Experiences Using the Mixed Reality Toolkit for UnityBuilding Holographic & VR Experiences Using the Mixed Reality Toolkit for Unity
Building Holographic & VR Experiences Using the Mixed Reality Toolkit for UnityNick Landry
 
Developing for Xbox as an Indie in 2018
Developing for Xbox as an Indie in 2018Developing for Xbox as an Indie in 2018
Developing for Xbox as an Indie in 2018Nick Landry
 
Mixed Reality Development Overview
Mixed Reality Development OverviewMixed Reality Development Overview
Mixed Reality Development OverviewNick Landry
 
Bots are the New Apps: Building Bots with ASP.NET WebAPI & Language Understan...
Bots are the New Apps: Building Bots with ASP.NET WebAPI & Language Understan...Bots are the New Apps: Building Bots with ASP.NET WebAPI & Language Understan...
Bots are the New Apps: Building Bots with ASP.NET WebAPI & Language Understan...Nick Landry
 
Mobilizing your Existing Enterprise Applications
Mobilizing your Existing Enterprise ApplicationsMobilizing your Existing Enterprise Applications
Mobilizing your Existing Enterprise ApplicationsNick Landry
 
Lessons Learned from Real World Xamarin.Forms Projects
Lessons Learned from Real World Xamarin.Forms ProjectsLessons Learned from Real World Xamarin.Forms Projects
Lessons Learned from Real World Xamarin.Forms ProjectsNick Landry
 
Building Mixed Reality Experiences with the HoloToolkit for Unity
Building Mixed Reality Experiences with the HoloToolkit for UnityBuilding Mixed Reality Experiences with the HoloToolkit for Unity
Building Mixed Reality Experiences with the HoloToolkit for UnityNick Landry
 
Microsoft Speech Technologies for Developers
Microsoft Speech Technologies for DevelopersMicrosoft Speech Technologies for Developers
Microsoft Speech Technologies for DevelopersNick Landry
 
Building Mixed Reality Experiences for Microsoft HoloLens
Building Mixed Reality Experiences for Microsoft HoloLensBuilding Mixed Reality Experiences for Microsoft HoloLens
Building Mixed Reality Experiences for Microsoft HoloLensNick Landry
 
Building a New Generation of Mobile Games with Speech
Building a New Generation of Mobile Games with SpeechBuilding a New Generation of Mobile Games with Speech
Building a New Generation of Mobile Games with SpeechNick Landry
 
Building Windows 10 Universal Apps with Speech and Cortana
Building Windows 10 Universal Apps with Speech and CortanaBuilding Windows 10 Universal Apps with Speech and Cortana
Building Windows 10 Universal Apps with Speech and CortanaNick Landry
 
Cloud-enabling the Next Generation of Mobile Apps
Cloud-enabling the Next Generation of Mobile AppsCloud-enabling the Next Generation of Mobile Apps
Cloud-enabling the Next Generation of Mobile AppsNick Landry
 
Hacking with the Cloud and Microsoft APIs
Hacking with the Cloud and Microsoft APIsHacking with the Cloud and Microsoft APIs
Hacking with the Cloud and Microsoft APIsNick Landry
 

Mais de Nick Landry (15)

Designing XR Experiences with Speech & Natural Language Understanding in Unity
Designing XR Experiences with Speech & Natural Language Understandingin UnityDesigning XR Experiences with Speech & Natural Language Understandingin Unity
Designing XR Experiences with Speech & Natural Language Understanding in Unity
 
MR + AI: Machine Learning for Language in HoloLens & VR Apps
MR + AI: Machine Learning for Language in HoloLens & VR AppsMR + AI: Machine Learning for Language in HoloLens & VR Apps
MR + AI: Machine Learning for Language in HoloLens & VR Apps
 
Building Holographic & VR Experiences Using the Mixed Reality Toolkit for Unity
Building Holographic & VR Experiences Using the Mixed Reality Toolkit for UnityBuilding Holographic & VR Experiences Using the Mixed Reality Toolkit for Unity
Building Holographic & VR Experiences Using the Mixed Reality Toolkit for Unity
 
Developing for Xbox as an Indie in 2018
Developing for Xbox as an Indie in 2018Developing for Xbox as an Indie in 2018
Developing for Xbox as an Indie in 2018
 
Mixed Reality Development Overview
Mixed Reality Development OverviewMixed Reality Development Overview
Mixed Reality Development Overview
 
Bots are the New Apps: Building Bots with ASP.NET WebAPI & Language Understan...
Bots are the New Apps: Building Bots with ASP.NET WebAPI & Language Understan...Bots are the New Apps: Building Bots with ASP.NET WebAPI & Language Understan...
Bots are the New Apps: Building Bots with ASP.NET WebAPI & Language Understan...
 
Mobilizing your Existing Enterprise Applications
Mobilizing your Existing Enterprise ApplicationsMobilizing your Existing Enterprise Applications
Mobilizing your Existing Enterprise Applications
 
Lessons Learned from Real World Xamarin.Forms Projects
Lessons Learned from Real World Xamarin.Forms ProjectsLessons Learned from Real World Xamarin.Forms Projects
Lessons Learned from Real World Xamarin.Forms Projects
 
Building Mixed Reality Experiences with the HoloToolkit for Unity
Building Mixed Reality Experiences with the HoloToolkit for UnityBuilding Mixed Reality Experiences with the HoloToolkit for Unity
Building Mixed Reality Experiences with the HoloToolkit for Unity
 
Microsoft Speech Technologies for Developers
Microsoft Speech Technologies for DevelopersMicrosoft Speech Technologies for Developers
Microsoft Speech Technologies for Developers
 
Building Mixed Reality Experiences for Microsoft HoloLens
Building Mixed Reality Experiences for Microsoft HoloLensBuilding Mixed Reality Experiences for Microsoft HoloLens
Building Mixed Reality Experiences for Microsoft HoloLens
 
Building a New Generation of Mobile Games with Speech
Building a New Generation of Mobile Games with SpeechBuilding a New Generation of Mobile Games with Speech
Building a New Generation of Mobile Games with Speech
 
Building Windows 10 Universal Apps with Speech and Cortana
Building Windows 10 Universal Apps with Speech and CortanaBuilding Windows 10 Universal Apps with Speech and Cortana
Building Windows 10 Universal Apps with Speech and Cortana
 
Cloud-enabling the Next Generation of Mobile Apps
Cloud-enabling the Next Generation of Mobile AppsCloud-enabling the Next Generation of Mobile Apps
Cloud-enabling the Next Generation of Mobile Apps
 
Hacking with the Cloud and Microsoft APIs
Hacking with the Cloud and Microsoft APIsHacking with the Cloud and Microsoft APIs
Hacking with the Cloud and Microsoft APIs
 

Último

Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAshyamraj55
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXTarek Kalaji
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationIES VE
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Websitedgelyza
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024SkyPlanner
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfJamie (Taka) Wang
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Brian Pichman
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-pyJamie (Taka) Wang
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioChristian Posta
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfDianaGray10
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostMatt Ray
 
UiPath Clipboard AI: "A TIME Magazine Best Invention of 2023 Unveiled"
UiPath Clipboard AI: "A TIME Magazine Best Invention of 2023 Unveiled"UiPath Clipboard AI: "A TIME Magazine Best Invention of 2023 Unveiled"
UiPath Clipboard AI: "A TIME Magazine Best Invention of 2023 Unveiled"DianaGray10
 
100+ ChatGPT Prompts for SEO Optimization
100+ ChatGPT Prompts for SEO Optimization100+ ChatGPT Prompts for SEO Optimization
100+ ChatGPT Prompts for SEO Optimizationarrow10202532yuvraj
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?IES VE
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfinfogdgmi
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPathCommunity
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaborationbruanjhuli
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDELiveplex
 
UiPath Studio Web workshop series - Day 5
UiPath Studio Web workshop series - Day 5UiPath Studio Web workshop series - Day 5
UiPath Studio Web workshop series - Day 5DianaGray10
 

Último (20)

Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBX
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Website
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-py
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and Istio
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
 
UiPath Clipboard AI: "A TIME Magazine Best Invention of 2023 Unveiled"
UiPath Clipboard AI: "A TIME Magazine Best Invention of 2023 Unveiled"UiPath Clipboard AI: "A TIME Magazine Best Invention of 2023 Unveiled"
UiPath Clipboard AI: "A TIME Magazine Best Invention of 2023 Unveiled"
 
100+ ChatGPT Prompts for SEO Optimization
100+ ChatGPT Prompts for SEO Optimization100+ ChatGPT Prompts for SEO Optimization
100+ ChatGPT Prompts for SEO Optimization
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdf
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation Developers
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
 
UiPath Studio Web workshop series - Day 5
UiPath Studio Web workshop series - Day 5UiPath Studio Web workshop series - Day 5
UiPath Studio Web workshop series - Day 5
 

Developing Windows Phone Apps with Maps and Location Services

  • 1. Nick Landry Microsoft Senior Technical Evangelist, NY Metro Nokia Developer Ambassador & Champion ext-nick.landry@nokia.com @ActiveNick – www.AgeofMobility.com #DVLUPDAY Developing Windows Phone Apps with Maps and Location Services talk2me Chicago – April 12, 2014
  • 2. Who is ActiveNick? • Senior Technical Evangelist – Microsoft, NY Metro Audience Team • Nokia Developer Ambassador and Champion • Former Microsoft MVP: 2005-2014 – Windows Phone Development • Mobile Publisher – Big Bald Apps: http://www.bigbaldapps.com • Speaker. Blogger. Author. Tweeter. Father. Gamer • 20+ Years of Professional Experience • Specialties: • Mobile Development • Location Intelligence & Geospatial Systems • Data Visualization, HPC, Cloud • Mobile Game Development • Blog: www.AgeofMobility.com • Twitter: @ActiveNick 2005-2014
  • 3. MUSIC WINDOWS PHONE USER EXPERIENCE HARDWARE DESIGN & ENGINEERING IMAGING SENSORCORE LUMIA DIFFERENTIATION Get noticed from the crowd LOCATION MUSICSENSORCORE
  • 4. Agenda Location and Maps on Windows Phone 8 Introducing the new Location API and the new Maps Controls Overview of the GIS World Windows Phone Runtime Location API How to Get the Phone’s Current Location How to Continuously Track the Phone’s Location How to Run Location-Tracking Apps in the Background Getting Started with the New Map Control Specifying Map Center and Zoom Animating Map Display Using Map Views
  • 5. More than Maps & GPS… Overview of the GIS World
  • 6. What is GIS? Maps (Raster / Vector) Aerial / Satellite Imagery Data Processing Geocoding Routing & Directions Spatial Data (Capture, Storage, Search) Spatial Storage & Search Reporting & Analytics Location Services
  • 7. Maps help you visualize critical business data Business IntelligenceSupply Chain Customer Locations 70-80% of business data has a geospatial component Why GIS?
  • 8. Why GIS + Mobile? • Every company that has a web site needs a map of where their location is • Better Imagery and New Perspectives • Personalizing the Mapping Experience • Going Mobile • Mobile devices are location aware, generally smarter and more powerful • Mobile devices are overtaking the PC • The boundary between Personal Navigation Devices and Smartphones is blurring • Social computing is inherently mobile: User location is almost always in play • New Emerging Technologies and Techniques • Geofencing, Background Location-Tracking, Location Based Advertisement, etc.
  • 10. Key GIS Players MicrosoftGoogle Maps Nokia Maps TomTom Esri MapQuestApple Maps OpenStreetMap
  • 11. Cross-Platform Solution Design Client Platforms GIS Providers Location Data in the Cloud Windows Azure Google Maps iOS Android Nokia & Bing Maps Windows
  • 12. Available Geospatial Services Nominatim Acceptable use Policy: 1 request/s Single thread, single machine, no scripts, no bulk geocoding Attribution required No limit version run by MapQuest Courtesy Limits 1 request per second per user Google Maps API: 25K requests/day Geocoding API: 2,500/day quota Places Search API: 100K/day quota 50K transactions/ day for mobile 5 x 50 batch geocoding / day 10K/30-days for evaluation No turn-by-turn navigation allowed All paid services Free base maps, demographic maps, reference maps, specialty maps Free shape files
  • 14. Location APIs on Windows Phone 8 • .NET Location API from Windows Phone OS 7.1 is still supported • System.Device.Location.GeoCoordinateWatcher and related classes • New Windows Phone Runtime location API • Accessible from managed and native code • Improved ability for one-shot location acquisition • Improved capabilities for location tracking • Convergent with Windows 8 location API
  • 15. ID_CAP_LOCATION Capability • You must include the ID_CAP_LOCATION capability in your app manifest • If you forget, calls to location APIs throw an UnauthorizedAccessException
  • 16. Location Sources GPS: +Accuracy, -Power, -Speed, -Indoors WiFi: +/- Accuracy, +/- Power, +/- Speed, +/- Urban Areas Cell Towers: -Accuracy, +Power, +Speed, -Wilderness
  • 17. Controlling the Sources the Geolocation Service Uses • You can’t! • You can set the DesiredAccuracy property of the Geolocator object: • PositionAccuracy.High – if you want the most accurate data available, but at the cost of increased battery usage, network bandwidth and possibly monetary charges from wireless network operators. Often this causes the GPS to be activated • PositionAccuracy.Default – to optimize for power • You can also set the DesiredAccuracyInMeters property to indicate to the Geolocation service the desired accuracy of any results • However, the Geolocation service determines the best location data to provide to the application
  • 18. How to Get the Phone’s Current Location private async void OneShotLocation_Click(object sender, RoutedEventArgs e) { Geolocator geolocator = new Geolocator(); geolocator.DesiredAccuracyInMeters = 50; try { Geoposition geoposition = await geolocator.GetGeopositionAsync( maximumAge: TimeSpan.FromMinutes(5), timeout: TimeSpan.FromSeconds(10) ); LatitudeTextBlock.Text = geoposition.Coordinate.Latitude.ToString("0.00"); LongitudeTextBlock.Text = geoposition.Coordinate.Longitude.ToString("0.00"); } catch (UnauthorizedAccessException) { // the app does not have the right capability or the location master switch is off StatusTextBlock.Text = "location is disabled in phone settings."; } }
  • 19. User Consent • Application certification requirements on user consent still the same as in 7.1 • If you are using location data just within your app, you do not need to ask explicitly for user consent (although they give consent when they install your app) • You only have to get user consent if you plan to make location data available to any other service or other person: 2.7.4 If your application publishes or makes available location data obtained from the Location Service API to any other service or other person (including advertising networks), your application must implement a method to obtain opt-in consent. …
  • 20. Location on Emulator • Windows Phone Emulator comes with Location simulator 2
  • 21. Demo 1 Get Phone Position and Location Emulator
  • 22. Location Tracking • If your app only needs the user’s location at the current time, use GetGeopositionAsync as already described • Continuously tracking the user’s location drains the user’s battery more and should only be used for apps that require it
  • 23. private void TrackLocation_Click(object sender, RoutedEventArgs e) { if (!tracking) { geolocator = new Geolocator(); geolocator.DesiredAccuracy = PositionAccuracy.High; geolocator.MovementThreshold = 100; // The units are meters. geolocator.StatusChanged += geolocator_StatusChanged; geolocator.PositionChanged += geolocator_PositionChanged; tracking = true; } else { geolocator.PositionChanged -= geolocator_PositionChanged; geolocator.StatusChanged -= geolocator_StatusChanged; geolocator = null; tracking = false; } } How to Track Location
  • 24. void geolocator_StatusChanged(Geolocator sender, StatusChangedEventArgs args) { string status = ""; switch (args.Status) { case PositionStatus.Disabled: // the application does not have the right capability or the location master switch is off status = "location is disabled in phone settings"; break; case PositionStatus.Initializing: // the geolocator started the tracking operation status = "initializing"; break; case PositionStatus.NoData: // the location service was not able to acquire the location status = "no data"; break; Geolocator Status
  • 25. void geolocator_StatusChanged(Geolocator sender, StatusChangedEventArgs args) { string status = ""; switch (args.Status) { case PositionStatus.Disabled: // the application does not have the right capability or the location master switch is off status = "location is disabled in phone settings"; break; case PositionStatus.Initializing: // the geolocator started the tracking operation status = "initializing"; break; case PositionStatus.NoData: // the location service was not able to acquire the location status = "no data"; break; case PositionStatus.Ready: Geolocator Status
  • 26. void geolocator_PositionChanged(Geolocator sender, PositionChangedEventArgs args) { Dispatcher.BeginInvoke(() => { LatitudeTextBlock.Text = args.Position.Coordinate.Latitude.ToString("0.00"); LongitudeTextBlock.Text = args.Position.Coordinate.Longitude.ToString("0.00"); }); } Position Changed
  • 28. Enable Location Tracking in the Background • Normally, when your user navigates away from your app, it is made dormant and all activity – including location tracking – is suspended • In Windows Phone 8, a location-tracking app can continue to run in the background after the user navigates away, as long as the app continues to actively track location • This feature enables scenarios such as an app that provides turn-by-turn directions or a run tracker
  • 29. • Edit WMAppManifest.xml using the XML (Text) Editor • Replace <DefaultTask> element as shown Enable Background Execution
  • 30. • In App.Xaml, register an event handler for the RunningInBackground event • This event is raised when the user navigates away from your background execution-enabled app while you are actively tracking location • When this event is raised, your app should stop all tasks that are not related to location tracking, including updates to the app’s UI <Application.ApplicationLifetimeObjects> <!--Required object that handles lifetime events for the application--> <shell:PhoneApplicationService Launching="Application_Launching" Closing="Application_Closing“ Activated="Application_Activated" Deactivated="Application_Deactivated“ RunningInBackground="Application_RunningInBackground"/> </Application.ApplicationLifetimeObjects> Register Event Handler for RunningInBackground Event
  • 31. // Static variables global to application to support tracking public static Geolocator Geolocator { get; set; } public static bool RunningInBackground { get; set; } // Code to execute when the application is activated (brought to foreground) private void Application_Activated(object sender, ActivatedEventArgs e) { RunningInBackground = false; } // Code to execute when the application is deactivated and is tracking location private void Application_RunningInBackground(object sender, RunningInBackgroundEventArgs e) { RunningInBackground = true; // Suspend all unnecessary processing such as UI updates } Implement RunningInBackground Event Handler
  • 32. void geolocator_PositionChanged(Geolocator sender, PositionChangedEventArgs args) { if (!App.RunningInBackground) { Dispatcher.BeginInvoke(() => { LatitudeTextBlock.Text = args.Position.Coordinate.Latitude.ToString("0.00"); LongitudeTextBlock.Text = args.Position.Coordinate.Longitude.ToString("0.00"); }); } else { // DEMO purposes only: Show toast if running in background Microsoft.Phone.Shell.ShellToast toast = new Microsoft.Phone.Shell.ShellToast(); toast.Content = args.Position.Coordinate.Latitude.ToString("0.00"); toast.Title = "Location: "; toast.NavigationUri = new Uri("/Page2.xaml", UriKind.Relative); toast.Show(); } } Do Not Update UI When Running in the Background Example
  • 34. • As we have seen, Background Location Tracking apps continue to run in the background • But if it is not actively tracking location when deactivated, it is made dormant as normal • If the user launches *another* location tracking app and deactivates that, then your app will be made dormant • If the user launches a new instance of the app, if there is a dormant instance, that is reactivated instead • Background Location Tracking apps get the Fast Application Resume behavior, which reactivates a dormant application if the user launches a new copy • The dormant instance of the app, including the history of visited app pages, is reactivated • By default, the list of previously visited pages is cleared for these ‘Reset’ activations • This may not be what you want… App Lifecycle for Background Location Tracking Apps Fast Application Resume
  • 35. private void InitializePhoneApplication() { ... // Handle reset requests for clearing the backstack RootFrame.Navigated += CheckForResetNavigation; ... } private void CheckForResetNavigation(object sender, NavigationEventArgs e) { // If the app has received a 'reset' navigation, then we need to check // on the next navigation to see if the page stack should be reset if (e.NavigationMode == NavigationMode.Reset) RootFrame.Navigated += ClearBackStackAfterReset; } Clearing Previously Launched Pages on Fast App Resume Add Logic to App.Xaml.cs to Check for Reset Navigation (Behavior Already Implemented in Project Templates) 4/16/20Microsoft3
  • 36. private void InitializePhoneApplication() { ... // Handle reset requests for clearing the backstack RootFrame.Navigated += CheckForResetNavigation; ... } private void CheckForResetNavigation(object sender, NavigationEventArgs e) { // If the app has received a 'reset' navigation, then we need to check // on the next navigation to see if the page stack should be reset if (e.NavigationMode == NavigationMode.Reset) RootFrame.Navigated += ClearBackStackAfterReset; } private void ClearBackStackAfterReset(object sender, NavigationEventArgs e) Clearing Previously Launched Pages on Fast App Resume Add Logic to App.Xaml.cs to Check for Reset Navigation (Behavior Already Implemented in Project Templates) 4/16/20Microsoft3
  • 37. Maps
  • 38. Maps APIs on Windows Phone 8 • Windows Phone 8 has new Map controls, accessible in the following namespaces: • Microsoft.Phone.Maps • Microsoft.Phone.Maps.Controls • Microsoft.Phone.Maps.Services • The Bing Maps Control is still supported, but is deprecated • You should only use the Bing Maps Control when you upgrade an app from Windows Phone OS 7.1 to Windows Phone 8 • Usage of the new Maps control differs from the Bing Maps control
  • 39. ID_CAP_MAP Capability • You must include the ID_CAP_MAP capability in your app manifest • If you forget, calls to location APIs throw an UnauthorizedAccessException
  • 40. • Add a Map to your UI • In XAML: <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <maps:Map x:Name="MyMap"/> </Grid> • In Code: private void CreateMap() { Map MyMap = new Map(); ContentPanel.Children.Add(MyMap); } Map Control
  • 41. • By default, map displays at zoom level 1 (world view) and centered at Lat: 0, Long: 0 • Use the Center and ZoomLevel properties to change this, in XAML or in code //Set the Map center by using Center property MyMap.Center = new GeoCoordinate(47.6097, -122.3331); //Set the map zoom by using ZoomLevel property MyMap.ZoomLevel = 10; Center and Zoom Level
  • 42. MapViews • It is common to move a map display from one location to another • A new map view is defined any time the position of the map is changed as a result of panning, zooming, rotating, or tilting • You can use the SetView method to define a map view • This takes the following parameters: • Center: A GeoCoordinate object defining the center of the map view • ZoomLevel: zoom level between 1 and 20 • Heading: specifies the directional heading that is pointing “up” on the mapin geometric degrees between 0 and 360 • Pitch: specifies the degree to which the map is tilted as a value between 0 and 180 • BoundingRectangle: a LocationRectangle object that contains the Map control • AnimationKind: sets the kind of animation you want to see (None, Linear or Parabolic) when the view changes
  • 43. • Set the cartographic mode of the map with the CartographicMode property Cartographic Mode Road (default) Aerial Hybrid Terrain
  • 44. • You can display the map in a light or dark color mode by setting the ColorMode property Light and Dark Color Modes Light (default) Dark
  • 45. Pedestrian Features and Landmarks • You can display additional elements on your map, such as landmarks and pedestrian features • Set the LandmarksEnabled property to true to display landmarks • Set the PedestrianFeaturesEnabled to true to display pedestrian features • Landmarks are visible only when the ZoomLevel is 7 or higher, and the Pitch property is 25 or higher
  • 47. • Unlike the Bing Maps API, the Windows Phone Maps API does not have a specific PushPin object • However, you can create your own PushPins by drawing UIElements onto a MapOverlay, then add the MapOverlay to a MapLayer which you add to the Map Pushpins 4/16/20Microsoft4
  • 48. private Grid CreatePushpin() { //Creating a Grid element. Grid MyGrid = new Grid(); MyGrid.RowDefinitions.Add(new RowDefinition()); MyGrid.RowDefinitions.Add(new RowDefinition()); MyGrid.Background = new SolidColorBrush(Colors.Transparent); //Creating a Rectangle Rectangle MyRectangle = new Rectangle(); MyRectangle.Fill = new SolidColorBrush(Colors.Black); MyRectangle.Height = 20; MyRectangle.Width = 20; MyRectangle.SetValue(Grid.RowProperty, 0); MyRectangle.SetValue(Grid.ColumnProperty, 0); //Adding the Rectangle to the Grid MyGrid.Children.Add(MyRectangle); Creating a Pushpin 4/16/20Microsoft4
  • 49. private Grid CreatePushpin() { //Creating a Grid element. Grid MyGrid = new Grid(); MyGrid.RowDefinitions.Add(new RowDefinition()); MyGrid.RowDefinitions.Add(new RowDefinition()); MyGrid.Background = new SolidColorBrush(Colors.Transparent); //Creating a Rectangle Rectangle MyRectangle = new Rectangle(); MyRectangle.Fill = new SolidColorBrush(Colors.Black); MyRectangle.Height = 20; MyRectangle.Width = 20; MyRectangle.SetValue(Grid.RowProperty, 0); MyRectangle.SetValue(Grid.ColumnProperty, 0); //Adding the Rectangle to the Grid MyGrid.Children.Add(MyRectangle); Creating a Pushpin 4/16/20Microsoft4
  • 50. private void AddMapOverlay() { Grid MyGrid = CreatePushpin(); //Creating a MapOverlay and adding the Grid to it. MapOverlay MyOverlay = new MapOverlay(); MyOverlay.Content = MyGrid; MyOverlay.GeoCoordinate = new GeoCoordinate(47.6097, -122.3331); MyOverlay.PositionOrigin = new Point(0, 0.5); //Creating a MapLayer and adding the MapOverlay to it MapLayer MyLayer = new MapLayer(); MyLayer.Add(MyOverlay); MyMap.Layers.Add(MyLayer); } Drawing a UIElement onto a MapLayer
  • 52. New Maps Launchers in Windows Phone 8.0
  • 53. MapsTask MapsTask makes launching the built-in Maps application easy MapsTask mapsTask = new MapsTask(); //Omit the Center property to use the user's current location. mapsTask.Center = new GeoCoordinate(47.6204, -122.3493); mapsTask.SearchTerm = "coffee"; mapsTask.ZoomLevel = 17; mapsTask.Show();
  • 54. MapsDirectionsTask • Launching built-in Maps tasks with directions enabled is trivial too! // Get Directions MapsDirectionsTask mapsDirectionsTask = new MapsDirectionsTask(); // You can specify a label and a geocoordinate for the end point. // GeoCoordinate spaceNeedleLocation = new GeoCoordinate(47.6204,-122.3493); // LabeledMapLocation spaceNdleLML = new LabeledMapLocation("Space Needle", // spaceNeedleLocation); // If you set the geocoordinate parameter to null, the label parameter // is used as a search term. LabeledMapLocation spaceNdleLML = new LabeledMapLocation("Space Needle", null); // If mapsDirectionsTask.Start is not set, the user's current location // is used as start point. mapsDirectionsTask.End = spaceNdleLML; mapsDirectionsTask.Show();
  • 55. • Use the map downloader task to enable users to download map data for offline use • The task launches the Maps settings application which allows the user to select a region of map data to download MapDownloaderTask MapDownloaderTask mapDownloaderTask = new MapDownloaderTask(); mapDownloaderTask.Show();
  • 56. • Use the map updater task to enable users to update map data they have previously downloaded for offline use • The task launches the Maps settings application which immediately checks to see if there are updates available for any previously downloaded map data MapUpdaterTask MapUpdaterTask mapUpdaterTask = new MapUpdaterTask(); mapUpdaterTask.Show();
  • 58. What’s New in Maps and Location Services in Windows Phone 8.1
  • 59. //build/ Sessions: Maps & Location Services • Building Geo-Aware Apps with Maps and Geofencing (2014) • http://channel9.msdn.com/Events/Build/2014/2-526 • Creating Engaging Windows Store Apps with the Bing Platform (2014) • http://channel9.msdn.com/Events/Build/2014/2-654 • Building the Best Mapping Apps for Windows Phone (2013) • http://aka.ms/Build2013Maps • Using Geolocation and Geofencing in Windows Store Apps (2013) • http://aka.ms/Build2013Geofencing • All //build/ 2014 sessions available online: • http://channel9.msdn.com/events/build/2014
  • 60. Review • Windows Phone Runtime location API is new in Windows Phone 8. It has the following features: • Accessible from managed and native code • Greater support for one-shot location acquisition • Support for Background Location Tracking • Convergent with Windows 8 • Use the new Maps APIs in Windows Phone 8 to develop maps-based apps, and incorporate location and search features • Set Center and Zoom Level • Animate to new location and zoom using map views • Select Road, Aerial, Hybrid or Terrain cartographic display modes • Draw UIElements onto a MapOverlay on top of the Map
  • 61. Next Steps… Get Ready to Become a Windows Phone Developer Download the SDK at dev.windowsphone.com Explore the Microsoft samples and start building apps in Visual Studio Learn More About Windows Phone Devvia Official Microsoft Videos Windows Phone 8 Jump Start Training: http://bit.ly/wp8jump Windows Phone 8 Dev for Absolute Beginners: http://bit.ly/wp8devAB Check Out Additional Learning Resources Pluralsight WP Training: www.pluralsight.com/training/Courses#windows-phone Nokia Developer: www.developer.nokia.com Download Additional Resources & Become an Expert Download the Windows Phone Toolkit: phone.codeplex.com Nokia Developer Offers: http://bit.ly/nokiadevoffers 62 1 2 3 4
  • 62. Microsoft & Nokia GIS References Links • Location for Windows Phone 8: http://bit.ly/WP8SDKloc • Maps and Navigation for Windows Phone 8: http://bit.ly/WP8SDKmaps • Nokia Lumia HERE APIs & HERE App Launchers: http://bit.ly/HEREAPI • Online Training Videos • Maps & Location Webinar (WP8 Jumpstart Series): http://bit.ly/WP8JumpMaps • Nokia Lumia App Labs – HERE Maps & Location API: http://bit.ly/LumiaLabHERE • Bing Maps Management Portal & Accounts Center: http://www.bingmapsportal.com • Bing Maps REST Services: http://bit.ly/BingMapsREST • Microsoft Bing Maps Blog: http://bit.ly/BingMapsBlog • Ricky’s Bing Maps Blog: http://rbrundritt.wordpress.com
  • 63. Samples and GeoFencing Guides • Windows Geolocation and Geofencing SDK Samples • http://aka.ms/WindowsGeoSamples • Blogs and Guides • Geofencing, start to finish guide • http://aka.ms/GeofencingGuide • Best Practices for geofencing apps • http://aka.ms/GeofencingBestPractices • Geofencing API reference • http://aka.ms/GeofencingAPIs
  • 64. Location Intelligence for Windows Store Apps Free GIS eBook By Rick Brundritt Bing Map Technical Solution Professional – EMEA • Primarily focused on Windows Store apps but good for WP8 apps too • Chapters 5 & 6 on Bing services can be applied to WP8 • Chapter 7 features a reusable Portable Class Library (PCL) used to import different types of spatial data, works great for WP8 • Chapter 11 on cross platform development covers WP8 Download for free at: http://rbrundritt.wordpress.com/my-book/
  • 65. Windows Phone Resources • Nick Landry’s Blog: www.AgeofMobility.com • Nick Landry’s Getting Started Resources: www.ageofmobility.com/?page_id=961 • Windows Phone Developer Blog: blogs.windows.com/windows_phone/b/wpdev • Windows Phone Consumer Blog: blogs.windows.com/windows_phone/b/windowsphone • Nokia WP Wiki: www.developer.nokia.com/Community/Wiki/Category:Windows_Phone • Nokia Dvlup Challenges & Rewards: www.dvlup.com • Nokia Conversations Blog: http://conversations.nokia.com • Microsoft App Studio: http://apps.windowsstore.com • Windows Phone Developer Magazine (online via Flipboard): http://flip.it/95YFG • GeekChamp (WP & Win8 dev): www.geekchamp.com • Windows Phone Central (News): www.wpcentral.com
  • 66. Thank You! Slides and demos will be posted on SlideShare (see link below) Let me know how you liked this session. Your feedback is important and appreciated. Slideshare: www.slideshare.net/ActiveNick Blog: www.AgeofMobility.com Twitter: @ActiveNick Mobile Apps: www.bigbaldapps.com LinkedIn: www.linkedin.com/in/activenick Website: www.mobility42.com Email: ext-nick.landry@nokia.com