C#实现百度地图瓦片下载器(更新无水印版下载地址)

工程中需要做地图,但是网络瓦片下载程序一般都添加有水印,隧查阅相关资料,自己写了一个小程序

话不多说,先奉上下载链接(加了水印)及效果图
下载地址:http://download.csdn.net/detail/u014124220/9645172 (带水印 免积分下载)
http://download.csdn.net/detail/upc_xbt/9922082 (不带水印 需要10个下载积分)

地图瓦片下载器界面

地图瓦片效果图


核心代码(不记得来自哪位大神的博客了,如果看到源码出处,请在下方回复):

System.Net.WebClient wc = new System.Net.WebClient();

string url = String.Format(@"http://online{0}.map.bdimg.com/onlinelabel/?qt=tile&x={1}&y={2}&z={3}&styles=pl&udt=20160719&scaler=1&p=0",Math.Abs(thrProcess.X + thrProcess.Y) % 4, thrProcess.X, thrProcess.Y, thrProcess.Z);
string localPath = downInfo.saveDir + String.Format("\\MapTiles\\Zoom{0}\\X{1}\\", thrProcess.Z, thrProcess.X);//   z\x\y 
string fileName = String.Format("{0}.png", thrProcess.Y);

if (File.Exists(localPath + fileName))  //如果下载文件已存在,则跳过下载
{
     continue;
}

if (Directory.Exists(localPath) == false)
{
     Directory.CreateDirectory(localPath);
}

wc.DownloadFile(url + fileName, localPath + fileName);

百度坐标为球坐标,先转换为平面坐标,
z为缩放深度,x,y就是图块坐标

  function getPosInfo(pos){
    //平面坐标
    var projection =map.getMapType().getProjection();
    var worldCoordinate = projection.lngLatToPoint(pos);

    //像素坐标
    var pixelCoordinate =new BMap.Pixel(Math.floor(worldCoordinate.x * Math.pow(2, map.getZoom() -18)),
                                        Math.floor(worldCoordinate.y * Math.pow(2, map.getZoom() -18)));

    //图块坐标
    var tileCoordinate =new BMap.Pixel(Math.floor(pixelCoordinate.x /256),
                                        Math.floor(pixelCoordinate.y /256));
  }
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值