C# 根据经纬度得到GOOGLE瓦片地址

C# 根据经纬度得到GOOGLE瓦片地址

      private int getMercatorLatitude(double lati,int zoom)
        {
            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);
        }
        public string getTile(double longitude, double latitude, int zoom)
        {
            longitude = 180 + longitude;
            double  longTileSize = 360.0 / (Math.Pow(2, (17 - zoom)));
            double  tilex = longitude / longTileSize;
            double tiley = getMercatorLatitude(latitude,17- zoom);
            tilex = Convert.ToInt32(Math.Floor(tilex ));
            tiley = Convert.ToInt32(Math.Floor(tiley));
            return tilex.ToString() + "&y=" + tiley.ToString() + "&z=" + (17 - zoom).ToString ();
        }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值