将MapElementsLayer添加到MapControl-UWP C#

时间:2018-07-20 10:24:33

标签: c# google-maps uwp

我想在我的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)

1 个答案:

答案 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