[英]Leaflet - Calculate zoom level from radius in meters
我正在尝试找到一种方法来计算给定半径(以米为单位)的缩放级别。
例如,我想在point x,y
内显示100km radius
,如何计算该点的适当缩放级别?
这将取决于:
web-Mercator map 在缩放 0(整个地图的一个图块)的分辨率(米/像素)由下式给出:
resolution = cos(latitude_rad) * earth circumference / tile width
以弧度为单位的纬度,以米为单位的地球周长(2 * pi * 半径)和 map 宽度由下式给出:
map width = 256
,因为图块的宽度为 256 像素。
在每个缩放步骤中,宽度(以像素为单位)加倍,因此在缩放 z 时: map width = 256*2^zoom
所以:
resolution=cos(latitude_rad) * 2*pi* 6371008 / (256*2^zoom)
但是当您使用一定数量的n个 256 像素图块时:
widthmap = cos(latitude_rad) * 2*pi* 6371008*n / (2^zoom)
现在,从远处获取缩放:
纬度以度为单位,半径是以米为单位的圆,n 是要显示的图块数:
zoom = floor(log2 ((cos(latitude *pi/180) * 2*pi* 6371008*n)/radius))
(你想要一个 integer 并确保你的整个圈子都在地图上)
例如,在 45 度 N/S、100 米和 1 个图块将为您提供 18 倍的缩放。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.