目前:Telerik:RadMap 支持
•Bing Maps bing地图(英文)//考虑过引用中文bing,本人无法实现...
•OpenStreet Maps OpenStreet (中国数据不全)
•Empty Provider (空的提供者 ——自定义地图数据源)附上本人自定义地图数据源 测试代码: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);
}
}
目前问题:protected override Uri GetTile()方法 不清楚里面如何实现 自定义地图数据获取,只要能显示中国版本的地图就行,百度/搜狗/bing/谷歌 都可以。(若本人思路有问题,可指出.)大牛帮帮忙,复制贴不要发,先谢了。
•Bing Maps bing地图(英文)//考虑过引用中文bing,本人无法实现...
•OpenStreet Maps OpenStreet (中国数据不全)
•Empty Provider (空的提供者 ——自定义地图数据源)附上本人自定义地图数据源 测试代码: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);
}
}
目前问题:protected override Uri GetTile()方法 不清楚里面如何实现 自定义地图数据获取,只要能显示中国版本的地图就行,百度/搜狗/bing/谷歌 都可以。(若本人思路有问题,可指出.)大牛帮帮忙,复制贴不要发,先谢了。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货