我正在尝试将 MapIcon 添加到我的 Bing 地图控件中。当我在Visual Studio上的调试环境中运行应用程序时,我没有任何问题。但是,一旦我构建并运行我的应用程序包,添加地图图标会使应用程序崩溃并引发异常,内容如下:
"无法将类型为 Windows.UI.Xaml.Controls.Maps.MapIcon 的对象转换为键入 Windows.UI.Xaml.Controls.Maps.IMapElement4">
下面是实例化 MapIcon 的简单代码。重要的是要知道我在调试模式下添加这些地图图标没有任何问题。只有在生成并运行应用包后,问题才存在。我能够使用 try/catch 查明异常,以便在发布的应用程序运行时显示异常。如果有人可以帮助我摆脱此异常,或者有任何解决方法的建议,将不胜感激
MapIcon messageicon2_2 = new MapIcon
{
Location = message_position,
NormalizedAnchorPoint = new Point(0.5, 1.0),
ZIndex = 0,
Title = "msg " + count + "(2.2)",
IsEnabled = true,
CollisionBehaviorDesired = MapElementCollisionBehavior.RemainVisible
};
MyWaypoints.Add(messageicon2_2);
messageLayer.MapElements = MyWaypoints;
[编辑澄清]:我知道这个错误专门来自 Mapicon 的实例化。此代码在 Windows 10 17134 机器上发布和运行时工作正常。我需要它运行的机器是 Windows 10 16299。此计算机无法更新到较新版本的窗口。我需要一种方法来在这个旧版本的窗口上显示这些地图图标。
异常指向添加到 Windows 操作系统版本 1803 (17134( 的MapElement
的IsEnabled
属性。请参阅 MapElement.IsEnabled 属性。
我知道异常不是最有帮助的,但也许还有其他一些关于它的警告被遗漏了?
对于此类错误,您可以删除缺少的 API 的所有使用和/或确保编写可在最低操作系统版本上运行的版本自适应代码,同时还可以利用仅在某些操作系统版本上可用的选定功能。
具体来说,您可以执行以下操作:
var messageicon2_2= new MapIcon
{
Location = message_position,
NormalizedAnchorPoint = new Point(0.5, 1.0),
ZIndex = 0,
Title = "msg " + count + "(2.2)",
CollisionBehaviorDesired = MapElementCollisionBehavior.RemainVisible
};
if (ApiInformation.IsPropertyPresent("Windows.UI.Xaml.Controls.Maps.MapElement", "IsEnabled"))
{
messageicon2_2.IsEnabled = true;
}
MyWaypoints.Add(messageicon2_2);
messageLayer.MapElements = MyWaypoints;