谷歌静态地图半径缩放

时间:2014-02-06 11:21:07

标签: php web-services google-maps

我正在PHP开发一个以千米为单位获取纬度,经度和半径的网络服务并生成google static map

此外,我在该半径中显示数据库中的所有点。

我的问题是如何在Google的radius参数中隐藏我的zoom以确保所有点在地图上都可见?

类似于:http://maps.googleapis.com/maps/api/staticmap?center=New+York,NY&[*THIS PARAMETER*zoom=13]&size=600x300&markers.......

2 个答案:

答案 0 :(得分:3)

Google Maps Documentation所述:

  

因为基本墨卡托谷歌地图图块是256 x 256像素   另请注意,每个缩放级别,地图都有2个 n 图块。

这意味着在zoomLevel 2中,地图任意方向的像素都是= 256 *2²= 1024px。

考虑到地球的周长约为40,000公里,变焦0,每个像素〜= 40,000 km / 256 = 156.25 km
在缩放9处,像素是131072:
1px = 40,000 km / 131072 = 0.305 km ......依此类推。

如果你的图像是640 x 640像素,而你使用变焦9,这意味着你将覆盖~640 * 0.305~ = 195km。所以你的半径大约是100km 每次缩放++时,半径都是一半。

如果使用变焦15(1px = 0.00478km),您的图像将覆盖~3km宽(半径1.5km)。

考虑到当你向北或向南走时,实际距离越小,因为失真越大。

您可以使用zoom = Floor(log 2 (EarthP * 2 PixMap /(256 * radius)))等参数。

  • EarthP =纬度(以km为单位)的地球周长
  • PixMap =您将显示的地图的像素
  • 您希望在图片中显示的半径=半径(以km为单位)
  • log 2 = base 2中的对数

注意:要将log 2 转换为常规日志,请执行以下操作:
楼层((log(EarthP * 2 PixMap /(256 * radius)))/ log 2)

Logarithms in Wikipedia

的参考

答案 1 :(得分:0)

查看LatLngBounds和map.fitBounds方法... Google maps api