高德地图实时路况下载

高德地图挺好的,不过那个实时的路况拥堵没有开放,一直想怎么样下载下来,看了一下还是可以下载的。

总的来说有一下几个步骤:

1、根据地图切好256*256的切片xy坐标,

2、根据xy坐标访问高德地图的实时路网路况接口

3、根据接口返回数据进行解密,解密后转成png图片或者转成地理坐标数据

第一第二读者可以从别的地方了解一下,

3、解密和转换png图片256*256

3.1、计算得到的切片xy还需要转换一下

public int[] getRealTileIndex(int x, int y, int z)
        {

                // z 是zoom地图缩放级别,高德导航的返回路径和16级是贴合的,所以想要自己保存路况建议导航保存路径,然后获取这个实时路况信息就知道哪里堵了,可以放postgis来匹配,也可以用图片来识别颜色,高德路况接口放回的数组的颜色对应是这个["#f93a43","#fcac19","#20a962","#83171c","#adadad"],其中就有红色绿色黄色
            try
            {
                int n = ((int)Math.Floor(decimal.Parse(z / 2 + "")));
                int i = z - n;
                return new int[] { z, x & (n = (1 << n) - 1 << i) | y & (i = (1 << i) - 1), y & n | x & i };

            }
            catch (Exception ce)
            {

            }
            return new int[] { z, x, y };
        }

3.2、转换字符串到图片的坐标 list 其中格式是x,y,x,y.....连成线段

public static List<int> exchange(string t)
        {
            int r=27;
            char n;
            int n2;
            string i = "ASDFGHJKLQWERTYUIO!sdfghjkleiu3~yr5-P&mq9`%zCN*b=8@^xpVM".Substring(0,27);
            int a = 333;
            List<int> o = new List<int>();
            int s = -1;
            int c = t.Length;
            for (int u = 0;  u < c;u++)
            {
                n = t[u];
                n2 = i.IndexOf(n+"");
                if(s == -1)
                {
                    s = n2 * r;
                }
                else
                {
                    o.Add(s + n2 - a);
                    s = -1;
                }
            }
            return o;
        }

从坐标转成png图片和转lnglat地理坐标读者自己从其他地方看看吧,这里就放关键的解密行了

以上代码是c#的,读者自己转一下到其他语言就行了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值