{
private const string baseUrl = " http://localhost/Maps/{0}.png " ;
public CustomTileSource()
: base (baseUrl, new LocationRect( new Location( 60 , 60 ), new Location( 13 , 140 )),
new Range < double > ( 1 , 17 ))
{ }
/// <summary>
/// 重写Tile算法
/// </summary>
/// <param name="x"></param>
/// <param name="y"></param>
/// <param name="zoomLevel"></param>
/// <returns></returns>
public overrIDe Uri GetUri( int x, int y, int zoomLevel)
{
return new Uri( string .Format( this .UriFormat, TileXYToQuadKey(x, y, zoomLevel)), UriKind.relativeOrabsolute);
}
/// <summary>
/// 坐标转换
/// </summary>
/// <param name="tileX"></param>
/// <param name="tileY"></param>
/// <param name="levelOfDetail"></param>
/// <returns></returns>
private static string TileXYToQuadKey( int tileX, int tileY, int levelOfDetail)
{
StringBuilder quadKey = new StringBuilder();
for ( int i = levelOfDetail; i > 0 ; i -- )
{
char digit = ' 0 ' ;
int mask = 1 << (i - 1 );
if ((tileX & mask) != 0 )
{
digit ++ ;
}
if ((tileY & mask) != 0 )
{
digit ++ ;
digit ++ ;
}
quadKey.Append(digit);
}
return quadKey.ToString();
}
} 在Silverlight端可以进行如下定义,来完成加载自己部署的地图数据。 < m:Map x:name ="map" margin ="0,0" CredentialsProvIDer =" {StaticResource MyCredentials} "
ScaleVisibility ="Visible"
copyrightVisibility ="Collapsed" >
< m:MapTileLayer x:name ="CustomMapTileLayer" ></ m:MapTileLayer >
</ m:Map > 名为CustomMapTileLayer的MapTileLayer则专门负责加载呈现自定义部署的地图图片数据,通过设置MapTileLayer的TileSources来应用上面自定义的TileSource算法,详细实现如下代码块: public MainPage()
{
InitializeComponent();
this .Loaded += (o, e) =>
{
this .CustomMapTileLayer.TileSources.Add( new CustomTileSource());
this .map.Mode = new MercatorMode();
map.ZoomLevel = 5 ;
};
} 这里需要注意一点就是设置了地图的Mode属性为MercatorMode,用于限制地图控件只加载自定义的地图图层,也就是不加载Bing Maps默认的地图底板图层。最终的运行效果如下图所示: 推荐资源: Bing Maps Tile System: http://msdn.microsoft.com/en-us/library/bb259689.aspx MapCruncher: http://research.microsoft.com/en-us/um/redmond/projects/mapcruncher/ 【Silverlight】Bing Maps学习系列(八):使用Bing Maps Silverlight Control加载自己部署的Google Maps Bing Maps进阶系列八:在Bing Maps中集成OpenStreetMap地图 总结
以上是内存溢出为你收集整理的Bing Maps进阶系列九:使用MapCruncher进行地图切片并集成进Bing Maps全部内容,希望文章能够帮你解决Bing Maps进阶系列九:使用MapCruncher进行地图切片并集成进Bing Maps所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)