繁体   English   中英

Leaflet - 根据以米为单位的半径计算缩放级别

[英]Leaflet - Calculate zoom level from radius in meters

我正在尝试找到一种方法来计算给定半径(以米为单位)的缩放级别。

例如,我想在point x,y内显示100km radius ,如何计算该点的适当缩放级别?

这将取决于:

  • 你的 map 的瓷砖数量
  • 你的观点的纬度

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM