12.maps and location
DESCRIPTION
Maps and location for windows phone.TRANSCRIPT
![Page 1: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/1.jpg)
Location and Maps
Nguyen Tuan | Microsoft Certified Trainer
![Page 2: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/2.jpg)
Agenda
Runtime Location API
Current Location
How to Continuously Track the Phone’s Location
How to Run Location-Tracking Apps in the Background
How to use Map Control
Specifying Map Center and Zoom
Animating Map Display Using Map Views
![Page 3: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/3.jpg)
8/16/2014 3
WP Runtime Location API
![Page 4: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/4.jpg)
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
![Page 5: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/5.jpg)
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
8/16/2014 5
![Page 6: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/6.jpg)
Location Sources
Location Services
+ Accuracy- Power- Speed- Indoors
- Accuracy+ Power+ Speed- Wilderness
+/- Accuracy+/- Power+/- Speed+/- Urban areas
GPS
Cell Towers
WiFi
![Page 7: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/7.jpg)
• 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
Controlling the Sources the Geolocation Service Uses
8/16/2014 ‹#›
![Page 8: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/8.jpg)
How to Get the Phone’s Current Locationprivate 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 offStatusTextBlock.Text = "location is disabled in phone settings.";
}}
![Page 9: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/9.jpg)
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. …
8/16/2014 9
![Page 10: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/10.jpg)
• Windows Phone Emulator comes with Location simulator
Location on Emulator
10
![Page 11: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/11.jpg)
• If your app only needs the user’s location at the current time, use GetGeopositionAsyncas already described
• Continuously tracking the user’s location drains the user’s battery more and should only be used for apps that require it
Location Tracking
8/16/2014 11
![Page 12: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/12.jpg)
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
8/16/2014
![Page 13: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/13.jpg)
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 offstatus = "location is disabled in phone settings";break;
case PositionStatus.Initializing:// the geolocator started the tracking operationstatus = "initializing";break;
case PositionStatus.NoData:// the location service was not able to acquire the locationstatus = "no data";break;
Geolocator Status
8/16/2014 13
![Page 14: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/14.jpg)
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 offstatus = "location is disabled in phone settings";break;
case PositionStatus.Initializing:// the geolocator started the tracking operationstatus = "initializing";break;
case PositionStatus.NoData:// the location service was not able to acquire the locationstatus = "no data";break;
case PositionStatus.Ready:// the location service is generating geopositions as specified by the
tracking parametersstatus = "ready";
Geolocator Status
![Page 15: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/15.jpg)
void geolocator_PositionChanged(Geolocator sender, PositionChangedEventArgsargs){
Dispatcher.BeginInvoke(() =>{
LatitudeTextBlock.Text = args.Position.Coordinate.Latitude.ToString("0.00");
LongitudeTextBlock.Text = args.Position.Coordinate.Longitude.ToString("0.00");
});}
Position Changed
8/16/2014 15
![Page 16: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/16.jpg)
Demo LocationTracker
16
![Page 17: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/17.jpg)
• 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
Enable Location Tracking in the Background
8/16/2014 17
![Page 18: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/18.jpg)
• Edit WMAppManifest.xml using the XML (Text) Editor• Replace <DefaultTask> element as shown
Enable Background Execution
18
![Page 19: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/19.jpg)
• In App.Xaml, register an event handler for the RunningInBackgroundevent
• 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 RunningInBackgroundEvent
8/16/2014 19
![Page 20: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/20.jpg)
// Static variables global to application to support trackingpublic 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 locationprivate void Application_RunningInBackground(object sender, RunningInBackgroundEventArgs e){
RunningInBackground = true;// Suspend all unnecessary processing such as UI updates
}
Implement RunningInBackground Event Handler
8/16/2014 20
![Page 21: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/21.jpg)
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 BackgroundExample
![Page 22: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/22.jpg)
• 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 AppsFast Application Resume
8/16/2014 22
![Page 23: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/23.jpg)
private void InitializePhoneApplication(){
...// Handle reset requests for clearing the backstackRootFrame.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 resetif (e.NavigationMode == NavigationMode.Reset)
RootFrame.Navigated += ClearBackStackAfterReset;}
Clearing Previously Launched Pages on Fast App ResumeAdd Logic to App.Xaml.cs to Check for Reset Navigation (Behavior Already Implemented in Project Templates)
8/16/2014 23
![Page 24: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/24.jpg)
private void InitializePhoneApplication(){
...// Handle reset requests for clearing the backstackRootFrame.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 resetif (e.NavigationMode == NavigationMode.Reset)
RootFrame.Navigated += ClearBackStackAfterReset;}
private void ClearBackStackAfterReset(object sender, NavigationEventArgs e){
// Unregister the event so it doesn't get called againRootFrame.Navigated -= ClearBackStackAfterReset;// Only clear the stack for 'new' (forward) and 'refresh' navigationsif (e.NavigationMode != NavigationMode.New && e.NavigationMode != NavigationMode.Refresh)
return;// For UI consistency, clear the entire page stackwhile (RootFrame.RemoveBackEntry() != null) { } // do nothing
}
Clearing Previously Launched Pages on Fast App ResumeAdd Logic to App.Xaml.cs to Check for Reset Navigation (Behavior Already Implemented in Project Templates)
8/16/2014 24
![Page 25: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/25.jpg)
DemoBackgroundLocationTracker
![Page 26: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/26.jpg)
Maps
![Page 27: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/27.jpg)
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
![Page 28: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/28.jpg)
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
8/16/2014 28
![Page 29: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/29.jpg)
• 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
![Page 30: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/30.jpg)
• By default, map displays at zoom level 1 (world view) and centered at Lat: 0, Long: 0
• Use the Center and ZoomLevelproperties to change this, in XAML or in code
//Set the Map center by using Center propertyMyMap.Center = new GeoCoordinate(47.6097, -
122.3331);
//Set the map zoom by using ZoomLevel propertyMyMap.ZoomLevel = 10;
Center and Zoom Level
8/16/2014 30
![Page 31: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/31.jpg)
• 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 GeoCoordiante 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
MapViews
8/16/2014 31
![Page 32: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/32.jpg)
• Set the cartographic mode of the map with the CartographicModeproperty
Cartographic Mode
8/16/2014 32
Road (default) Aerial Hybrid Terrain
![Page 33: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/33.jpg)
• You can display the map in a light or dark color mode by setting the ColorMode property
Light and Dark Color Modes
8/16/2014 33
Light (default) Dark
![Page 34: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/34.jpg)
• 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
Pedestrian Features and Landmarks
8/16/2014 34
![Page 35: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/35.jpg)
Demo 1. BasicLocationandMap2. MapViews
35
![Page 36: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/36.jpg)
• 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 MapOverlayto a MapLayer which you add to the Map
Pushpins
8/16/2014 36
![Page 37: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/37.jpg)
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 RectangleRectangle 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 GridMyGrid.Children.Add(MyRectangle);
Creating a Pushpin
8/16/2014 37
![Page 38: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/38.jpg)
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 RectangleRectangle 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 GridMyGrid.Children.Add(MyRectangle);
//Creating a Polygon
Creating a Pushpin
8/16/2014 38
![Page 39: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/39.jpg)
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 itMapLayer MyLayer = new MapLayer();MyLayer.Add(MyOverlay);MyMap.Layers.Add(MyLayer);
}
Drawing a UIElement onto a MapLayer
8/16/2014 39
![Page 40: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/40.jpg)
DemoLocationAndMaps
40
![Page 41: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/41.jpg)
Maps Launchers
![Page 42: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/42.jpg)
MapsTaskMapsTask 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();
![Page 43: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/43.jpg)
• Launching built-in Maps tasks with directions enabled is trivial too!
MapsDirectionsTask
43
// Get DirectionsMapsDirectionsTask 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();
![Page 44: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/44.jpg)
• 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 = newMapDownloaderTask();
mapDownloaderTask.Show();
![Page 45: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/45.jpg)
• 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();
![Page 46: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/46.jpg)
Demo MapsTask
46
![Page 47: 12.Maps and Location](https://reader034.vdocument.in/reader034/viewer/2022051610/54857845b47959d80c8b4e10/html5/thumbnails/47.jpg)
Summaries
• 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