我想在我的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 Fall Creators Update(10.0,内部版本16299) 最低版本:Windows 10(10.0,Build 10240)
答案 0 :(得分:1)
MapElementsLayer
类需要设备系列
Windows 10 Fall Creators Update (introduced v10.0.16299.0)
,也就是说,您必须在Windows 10设备目标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();
}
更多详细信息,请参见this document。