Hi @Frank LaRosa ,
Not only that Enterprise Bing Maps tokens will continue to be supported until 2028, but Microsoft has also stopped onboarding new customers to the Bing Maps Enterprise program. This means that only existing enterprise customers can continue using their tokens until the end-of-support date — new users cannot obtain Enterprise tokens anymore.
Given this, the best long-term solution is to migrate your UWP application to use Azure Maps. Azure Maps is actively supported and offers robust mapping capabilities, including REST APIs, Web SDKs, and integration with other Azure services.
You can follow this instruction for more detail!
I read through some of the migration information, but it isn't clear to me if UWP is supported or not.
Regarding UWP support — you're not wrong, UWP is not supported yet because Azure Maps does not currently offer a native UWP control like MapControl. However, you can still integrate Azure Maps into your UWP app using WebView to host the Azure Maps Web SDK, or by calling its REST APIs and rendering the data manually. This approach may require some architectural changes, but it's the most future-proof path forward.
You can read these previous answers from here and here, — thanks to rbrundritt for sharing helpful guidance. I recommend following his instructions to implement Azure Maps successfully!
Here is my basic Azure Maps implement follow rbrundritt:
-
azuremap.html file, put in assets folder
<!DOCTYPE html>
<html lang="en">
<head>
<title></title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<!-- Add references to the Azure Maps Map control JavaScript and CSS files. -->
<link href="https://atlas.microsoft.com/sdk/javascript/mapcontrol/3/atlas.min.css" rel="stylesheet" />
<script src="https://atlas.microsoft.com/sdk/javascript/mapcontrol/3/atlas.min.js"></script>
<script>
var map;
//Your Azure Maps key. Get an Azure Maps key at https://azure.com/maps.
//Consider storing this in a secure location and loading it when when calling get map.
var subscriptionKey = 'key';
function getMap()
{
//Initialize a map instance.
map = new atlas.Map('myMap',
{
center: [-97, 39], zoom: 3,
// style: 'grayscale_dark',
view: 'Auto',
//Add authentication details for connecting to Azure Maps.
authOptions:
{
authType: 'subscriptionKey',
subscriptionKey: subscriptionKey
}
});
}
function setMapView(cameraOptions) {
map.setCamera(cameraOptions);
}
</script>
<style>
html, body {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
}
#myMap {
position: relative;
width: 100%;
height: 100%;
}
</style>
</head>
<body onload="getMap()">
<div id="myMap"></div>
</body>
</html>
-
MainPage.xaml call WebView2
<Page x:Class="Map.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Map"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:webview="using:Microsoft.UI.Xaml.Controls"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid>
<webview:WebView2 x:Name="MyWebView" />
</Grid>
</Page>
-
MainPage.xaml.cs call the azuremap.html for WebView
using System;
using Microsoft.UI.Xaml.Controls;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;
using System.Diagnostics;
using Windows.Storage;
namespace Map
{
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
Loaded += MainPage_Loaded;
}
private async void MainPage_Loaded(object sender, RoutedEventArgs e)
{
try
{
await MyWebView.EnsureCoreWebView2Async();
MyWebView.CoreWebView2.Settings.AreDevToolsEnabled = true;
var htmlFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/azuremap.html"));
MyWebView.Source = new Uri($"file:///{htmlFile.Path}");
}
catch (Exception ex)
{
}
}
}
}
Let me know if you need any helps! Thank you!