如何计算来自Latlong的相应图块以及相应的图块位置以获取谷歌地图的特定缩放级别?

时间:2015-05-19 07:35:18

标签: google-maps google-maps-api-3

我想在我的服务器上创建自定义图块,用于在Google地图上显示为叠加图块。

为此,我需要计算给定的latlong和zoom级别对应的TileX,谷歌地图上的TileY和那个tile上的那个lat的xpos和ypos。

我找到了一些找到TileX和TileY的公式,但我没有找到计算xpos,ypos的公式。

$xtile = floor((($lon + 180) / 360) * pow(2, $zoom));
$ytile = floor((1 - log(tan(deg2rad($lat)) + 1 / cos(deg2rad($lat))) / pi()) /2 * pow(2, $zoom));

输入:LatLong,ZoomLevel

输出:xpos,ypos

1 个答案:

答案 0 :(得分:0)

来自Documentation on MapTypes

// Normalizes the coords that tiles repeat across the x axis (horizontally)
// like the standard Google map tiles.
function getNormalizedCoord(coord, zoom) {
  var y = coord.y;
  var x = coord.x;

  // tile range in one direction range is dependent on zoom level
  // 0 = 1 tile, 1 = 2 tiles, 2 = 4 tiles, 3 = 8 tiles, etc
  var tileRange = 1 << zoom;

  // don't repeat across y-axis (vertically)
  if (y < 0 || y >= tileRange) {
    return null;
  }

  // repeat across x-axis
  if (x < 0 || x >= tileRange) {
    x = (x % tileRange + tileRange) % tileRange;
  }

  return {
    x: x,
    y: y
  };
}