leaflet 加载腾讯地图

地图切片,又叫地图瓦片,,个人比较喜欢叫切片。
leaflet 默认的地图切片规则是,切片原点在左上角(即[85.05112877980659,-180]),而腾讯地图的使用切片规则是,其他不变,原点在左下角(即[-85.05112877980659,-180])。既然知道了规则,那么leaflet应该怎么加载呢。

搜索了一波,下面是我觉得比较好的一个例子:
(地址: https://my.oschina.net/zhajiang/blog/424157)

    const txUrl = 'http://rt{s}.map.gtimg.com/realtimerender?z={z}&x={x}&y={y}&type=vector&style=0';
    const options = {
        subdomains: '0123',
        getUrlArgs: function (tilePoint) {
            return {
                z: tilePoint.z,
                x: tilePoint.x,
                y: Math.pow(2, tilePoint.z) - 1 - tilePoint.y
            };
        }
    };
    const txLayer = L.tileLayer.webdogTileLayer(txUrl,options).addTo(map);

map

上面这个例子不错,还可以体现 leaflet 加载不同规则的切片的方式。

发现还有一个更简洁的方式。根据切片规则,可以更简单的加载腾讯地图,就是利用 tileLayer 的 tms 参数,即:

const txLayer = L.tileLayer(txUrl,{subdomains: '0123',tms:true}).addTo(map);

leaflet 文档解释
options

大概意思就是,tms只要设为 true 时,y轴的值则取“相反”。怎么理解这个“相反”,例如,y轴的全部序号为[1,2,3,4,5,6,7,8,9,10],假如y=2,那么其“相反值”就是y=9,刚好是腾讯地图切片规则符合,所以加上tms这个option即可。

更多信息欢迎关注公众号

OPEN_GIS
### 集成Leaflet腾讯地图API 为了在Leaflet中集成腾讯地图API,开发者可以利用自定义Tile Layer来加载腾讯地图瓦片服务。这涉及到创建一个特定的地图URL模板并将其配置到Leaflet的`L.tileLayer()`方法中。 #### 创建腾讯地图Tile Layer 通过腾讯地图开放平台申请密钥后,可构建如下形式的地图瓦片请求链接: ```javascript const tencentMapUrl = 'https://rt1.map.gtimg.com/realtimerender?z={z}&x={x}&y={-y}&type=vector&style=0,25,0,78,96,255&key=YOUR_TENCENT_MAP_KEY'; ``` 其中`{z}`代表缩放级别,而`{-y}`表示Y坐标的取反(因为某些地图服务商采用不同的坐标系),最后替换`YOUR_TENCENT_MAP_KEY`为实际获取的应用程序接口密钥[^1]。 #### 初始化Leaflet Map对象并与腾讯地图连接 下面是一个简单的HTML页面例子,展示了如何初始化Leaflet map实例并将上述创建好的tile layer添加进去: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Leaflet with Tencent Maps</title> <!-- 引入 Leaflet CSS --> <link rel="stylesheet" href="https://unpkg.com/leaflet/dist/leaflet.css"/> <script src="https://unpkg.com/leaflet/dist/leaflet.js"></script> </head> <body> <div id="mapid" style="height: 500px;"></div> <script type="text/javascript"> // 设置中心点经纬度以及初始缩放等级 var mymap = L.map('mapid').setView([39.9042, 116.4074], 13); // 添加腾讯地图图层至Leaflet地图容器内 L.tileLayer('https://rt1.map.gtimg.com/realtimerender?z={z}&x={x}&y={-y}&type=vector&style=0,25,0,78,96,255&key=YOUR_TENCENT_MAP_KEY', { }).addTo(mymap); </script> </body> </html> ``` 此代码片段实现了基本功能——显示带有腾讯地图底图的基础Leaflet交互式Web地图应用程序。请注意,在生产环境中部署前应确保已正确设置跨域资源共享(CORS)策略,并妥善保管个人API key的安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值