在线生成百度瓦片范围json

1.确定经纬度坐标范围。

随便打开一个百度地图API示例,如http://lbsyun.baidu.com/jsdemo.htm#canvaslayer

在<script></script>标签内插入1个函数:

//经纬度转为平面坐标
function lnglatToPoint(longitude, latitude) {
    let projection = new BMap.MercatorProjection();
    let lnglat = new BMap.Point(longitude, latitude);
    let point = projection.lngLatToPoint(lnglat);
    return {
        pointX: point.x,
        pointY: point.y
    };
}

既然是百度地图的api示例,代码中一定有BMap对象mp(也可能是其他名称)。在</script>之前加入以下代码:

//单击时显示该点经纬度
mp.addEventListener("click",function(e){
    var pt = lnglatToPoint(e.point.lng,e.point.lat);
    console.log(pt);
});

单击页面上方的“运行”,打开浏览器调试界面(chrome浏览器按F12),在地图中单击目标区域的上下左右边界处,可以在调试界面的Console面板看到输出的经纬度范围。我确定的地图经纬度范围是:

经度:72~136

纬度:1~54

2.转换为百度瓦片坐标。

百度瓦片分为3-18级,分别计算每一级的瓦片坐标范围。在<script></script>标签内插入以下2个函数:

// 平面坐标转为瓦片坐标
function getTile(point,level){
    return point * Math.pow(2,level-18)/256;
}
//计算level=3~18时瓦片编号x,y的范围,编为json格式字符串,输出到控制台
function getMyTiles(){
    var top = 54;
    var bottom = 1;
    var left = 72;
    var right = 136;
	//左下角,右上角
    var start  = lnglatToPoint(left,bottom);
    var end = lnglatToPoint(right,top);
    var str = "";
    for(var z=3;z<19;z++){
      str+=("{z:"+z+",xmin:"+getTile(start.pointX,z)+",ymin:"+getTile(start.pointY,z)+",xmax:"+getTile(end.pointX,z)+",ymax:"+getTile(end.pointY,z)+"},");
    }
    console.log(str);
}

在Console面板输入getMyTiles(),回车运行,可以看到json字符串已经打印出来了。

双击json字符串,右键复制到文本编辑器,完成。

 

参考资料:

国内主要地图瓦片坐标系定义及计算原理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值