WPF项目引入Nuget包:
<PackageReference Include="Esri.ArcGISRuntime" Version="200.3.0" />
<PackageReference Include="Esri.ArcGISRuntime.WPF" Version="200.3.0" />
在WPF View的XML命名空间中添加:
xmlns:esri="http://schemas.esri.com/arcgis/runtime/2013"
在Grid中添加esri地图控件:
<Grid>
<esri:MapView x:Name="MapView" Margin="5"/>
</Grid>
WPF ViewModel中实现地图加载:
注意:此处wmts服务Uri中的x,y,z参数名称和天地图官网例子中的不一样,官网例子中TILEMATRIX={z}&TILEROW={y}&TILECOL={x} 这种方式是web端通过OpenLayer加载的,但在此处通过Esri ArcGISRuntime加载,需要改为TILEMATRIX={level}&TILEROW={row}&TILECOL={col}
private const string TianMapBaseMapUri = "http://t2.tianditu.gov.cn/vec_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={level}&TILEROW={row}&TILECOL={col}&tk=" + 你的Key;
private const string TianMapLabelUri = "http://t2.tianditu.gov.cn/cva_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cva&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={level}&TILEROW={row}&TILECOL={col}&tk=" + 你的Key;
private void InitBasemap()
{
MapView.Map = new Map();
//加载天地图 矢量底图
var webtileBaseLayer = new WebTiledLayer(TianMapBaseMapUri);
MapView.Map.Basemap?.BaseLayers.Add(webtileBaseLayer);
//加载天地图 矢量注记
var webtileNodeLayer = new WebTiledLayer(TianMapLabelUri);
MapView.Map.OperationalLayers.Add(webtileNodeLayer);
MapView.SetViewpoint(new Viewpoint(
latitude: 34.2784,
longitude: 108.9414,
scale: 120000));
}
F5运行,完美加载!