Application.DoEvents()

刚刚做一个小的地图瓦片下载程序,本来想加个进度条来显示下载进度,但是不知道要下多少张图片,progressBar不太会用,于是直接加了个lable标签计数。

发现在运行的时候,lable标签并没有实时显示计数结果,鼠标拖动窗体程序会卡死,于是百度了一下,ok,Application.DoEvents()就这样出现在了眼前,加到循环后面,运行完美。

Application.DoEvents():刷新窗体信息


计算瓦片的位置百度搜索:Slippy map tilenames(瓦片和经纬度换算)

 使用了墨卡托投影的googlemap、天地图影像等,相应纬度对应的瓦片纵轴序号

private int getMercatorLatitude(double lati)
        {
            double maxlat = Math.PI;

            double lat = lati;
           
            if (lat > 90) lat = lat - 180;
            if (lat < -90) lat = lat + 180;

            // conversion degre=>radians
            // 转换度数到弧度
            double phi = Math.PI * lat / 180;

            double res;
              //网上其他帖子这个地方有问题,应该为加号
            //double temp = Math.Tan(Math.PI / 4 + phi / 2);
            //res = Math.Log(temp);
            //下面这一句是上面的合并
            res = 0.5 * Math.Log((1 + Math.Sin(phi)) / (1 - Math.Sin(phi)));
            double maxTileY = Math.Pow(2, zoom);
            int result = (int)(((1 - res / maxlat) / 2) * (maxTileY));

            return (result);
        }
View Code

来自:http://www.360doc.com/content/13/0129/18/11253639_263089923.shtml

转载于:https://www.cnblogs.com/dazhangyu/p/4959371.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值