If you want to show a map with a pushpin in Metro app you need, up to now, to embed the Map into a WebView control to avoid the lack of a native Map Control in Windows 8.
To generate a valid URL from latitude and longitude parameters use this method in your code
public static string GetMapUri(double latitude, double longitude, int zoom, string mapStyle, int width, int height) { ObservableCollection pins = new ObservableCollection(); ImageryService.Pushpin pushpin = new ImageryService.Pushpin(); pushpin.Location = new ImageryService.Location(); pushpin.Location.Latitude = latitude; pushpin.Location.Longitude = longitude; pushpin.IconStyle = "2"; pins.Add(pushpin); MapUriRequest mapUriRequest = new MapUriRequest(); // Set credentials using a valid Bing Maps Key mapUriRequest.Credentials = new ImageryService.Credentials(); mapUriRequest.Credentials.ApplicationId = BingMapKey; // use your personal key // Set the location of the requested image mapUriRequest.Pushpins = pins; // Set the map style and zoom level MapUriOptions mapUriOptions = new MapUriOptions(); switch (mapStyle.ToUpper()) { case "HYBRID": mapUriOptions.Style = ImageryService.MapStyle.AerialWithLabels; break; case "ROAD": mapUriOptions.Style = ImageryService.MapStyle.Road; break; case "AERIAL": mapUriOptions.Style = ImageryService.MapStyle.Aerial; break; default: mapUriOptions.Style = ImageryService.MapStyle.Road; break; } mapUriOptions.ZoomLevel = zoom; // Set the size of the requested image to match the size of the image control mapUriOptions.ImageSize = new ImageryService.SizeOfint(); mapUriOptions.ImageSize.Height = height; mapUriOptions.ImageSize.Width = width; mapUriRequest.Options = mapUriOptions; ImageryServiceClient imageryService = new ImageryServiceClient(ImageryServiceClient.EndpointConfiguration.BasicHttpBinding_IImageryService); MapUriResponse mapUriResponse = null; try { mapUriResponse = imageryService.GetMapUriAsync(mapUriRequest).Result; } catch (Exception ex) { Debug.WriteLine("GeoLocation: " + ex.Message); } return mapUriResponse.Uri; }
You also need to reference the Bing Maps SOAP Services
GeocodeService
http://dev.virtualearth.net/webservices/v1/geocodeservice/geocodeservice.svc?wsdl
SearchService
http://dev.virtualearth.net/webservices/v1/searchservice/searchservice.svc?wsdl
ImageryService
http://dev.virtualearth.net/webservices/v1/imageryservice/imageryservice.svc?wsdl
RouteService
http://dev.virtualearth.net/webservices/v1/routeservice/routeservice.svc?wsdl
Wrap the generated string in a URI and insert it into the WebView controller.