62,053
社区成员
发帖
与我相关
我的任务
分享
xmlns:local="clr-namespace:程序集目录(namespace为隐射出MyMapProvider类)"
<telerik:RadMap x:Name="radMap" >
<telerik:RadMap.Providers>
<local:MyMapProvider/> //使用MyMapProvider类作为自定义地图数据源
</telerik:RadMap.Providers>
<telerik:InformationLayer x:Name="informationLayer">....
</telerik:InformationLayer>
</telerik:RadMap>
public class MyMapProvider : TiledProvider
{
/// <summary>
/// Initializes a new instance of the MyMapProvider class.
/// </summary>
public MyMapProvider()
: base()
{
MyMapSource source = new MyMapSource();
this.MapSources.Add(source.UniqueId, source);
}
/// <summary>
/// Returns the SpatialReference for the map provider.
/// </summary>
public override ISpatialReference SpatialReference
{
get
{
return new MercatorProjection();
}
}
}
public class MyMapSource : TiledMapSource
{
/// <summary>
/// Initializes a new instance of the MyMapSource class.
/// </summary>
public MyMapSource()
: base(1, 20, 256, 256)
{
}
/// <summary>
/// Initialize provider.
/// </summary>
public override void Initialize()
{
// Raise provider initialized event.
this.RaiseIntializeCompleted();
}
/// <summary>
/// Gets the image URI.
/// </summary>
/// <param name="tileLevel">Tile level.</param>
/// <param name="tilePositionX">Tile X.</param>
/// <param name="tilePositionY">Tile Y.</param>
/// <returns>URI of image.</returns>
protected override Uri GetTile(int tileLevel, int tilePositionX, int tilePositionY)
{
int zoomLevel = ConvertTileToZoomLevel(tileLevel);
// Prepare tile url somehow ...
string quadkey = new QuadKey(tilePositionX, tilePositionY, tileLevel).Key;
string uri = "http://r3.tiles.ditu.live.com/tiles/r" + quadkey + ".png?g=47";
return new Uri(uri);
}
}