public class OOBChineseRoadModeTileSource : LocationRectTileSource
{
public override Uri GetUri(int x, int y, int zoomLevel)
{
//调用LocationRectTileSource的GetUri返回的是null,估计这个就是OOB下显示不出地图的原因,因此自己计算Uri返回
string quadkey = new QuadKey(x, y, zoomLevel).Key;
Uri uri = new Uri("http://r3.tiles.ditu.live.com/tiles/r" + quadkey + ".png?g=47");//使用中国Bing地图
WebClient wc = new WebClient();
wc.OpenReadAsync(uri, quadkey);
wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted);
return uri;
}
void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
string path = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures);
using (FileStream fs = File.OpenWrite(path + @"\tiles\" + e.UserState + ".png"))
{
e.Result.CopyTo(fs);
}
}
}
也就是把BMSL发出去的请求uri图片用WebClient保存到本地磁盘(由于是保存到本地磁盘,所以需要使用启用了信任的OOB模式运行)。
然后在BingMapsSL中在自己的抓取的那部分区域移动、缩放就可以,把想抓取的区域都走一遍,这样就会自动把我们看的区域的地图的Tile下载下来了。
然后用CassiniDev把下载的Tile图片的文件夹设置为Web路径就可以。
最新评论