我想在MapControl上添加一个图像。我试过如下。但是抛出了一个异常
System.TypeLoadException:请求的Windows运行时类型"Windows.UI.Xaml.Controls.Maps.MapElementsLayer"未注册。
public void AddSpaceNeedleIcon()
{
var MyLandmarks = new List<MapElement>();
BasicGeoposition snPosition = new BasicGeoposition { Latitude = 47.620, Longitude = -122.349 };
Geopoint snPoint = new Geopoint(snPosition);
var spaceNeedleIcon = new MapIcon
{
Location = snPoint,
NormalizedAnchorPoint = new Point(0.5, 1.0),
ZIndex = 0,
Title = "Space Needle"
};
MyLandmarks.Add(spaceNeedleIcon);
var LandmarksLayer = new MapElementsLayer
{
ZIndex = 1,
MapElements = MyLandmarks
};
myMap.Layers.Add(LandmarksLayer);
myMap.Center = snPoint;
myMap.ZoomLevel = 14;
}
我的项目的目标版本是:Windows 10秋季创建者更新(10.0,内部版本16299(最低版本:windows 10(10.0,Build 10240(
MapElementsLayer
类需要设备系列Windows 10 Fall Creators Update (introduced v10.0.16299.0)
,换句话说,您必须在windows10设备目标16299或更高版本中调用此API。如果运行应用程序的windows 10设备不符合此要求,则可能会出现上述异常。
在某些情况下,您希望在引用的扩展SDK中调用API,但该API不是您所针对的设备系列的一部分,为了避免出现上述异常,您可以使用ApiInformation
类编写自适应代码。例如,在使用MapElementsLayer
类之前,您可以编写如下代码:
bool isMapElementsLayersAPIPresent =
Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.UI.Xaml.Controls.Maps.MapElementsLayer");
if (isMapElementsLayersAPIPresent)
{
AddSpaceNeedleIcon();
}
更多详细信息,请参阅本文档。