天地图418优化

天地图418优化

效果

优化前

22个request,418了11个,成功率50%

image.png

优化后

26个request,418了0个,成功率100%
image.png

优化手段

1.key的负载均衡

打开天地图控制台,多申请几个key(一个账号最多5个,所以我多搞了几个账号),然后利用随机函数让每次获取key时都能随机访问。

export const aks = [
    "[key1]",
    "[key2]",
    "[key3]",
    ...
];

export const rand = (min = 0, max = 1) => (
    Math.round(Math.random() * (max - min) + min)
)

const akProxy = new Proxy(aks, {
    get(target, prop){
        if (prop === 'ak') {
            return target[rand(0, target.length - 1)]
        }
        return target[prop]
    }
})

// 天地图 source
export const sourceUrlForMap = `http://t0.tianditu.gov.cn/img_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=${akProxy.ak}`;

2.偷别人的key

打开天地图的示例项目,点击右下角icon,选择自己喜欢的图层,在控制台的request面板中,抓取官方示例的key,补充到上一小节的数组aks中。具体参考:干货 | 密钥申请麻烦且有访问次数限制?教你如何简单快速地获取天地图API密钥

同理你也可以用同样的办法抓其他地图项目的key为自己所用。

3.接入天地图官网的负载均衡

天地图api中,有这么一段话

*天地图地图服务二级域名包括t0-t7,您可以随机选择使用,如http://t2.tianditu.gov.cn/vec_c/wmts?tk=您的密钥

image.png

所以我们运用第一节中的思路,对请求的域名也做负载均衡

export const servers = [...Array(8).keys()];

const serversProxy = new Proxy(servers, {
    get(target, prop){
        if (prop === 'server') {
            return target[rand(1, target.length - 1)]
        }
        return target[prop]
    }
})

export const sourceUrlForMap = `http://t${serversProxy.server}.tianditu.gov.cn/img_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=${akProxy.ak}`;

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值