如何从Google Maps xy和zoom参数获取纬度和经度边界

道格拉斯

我已经看到了类似的标题了一些问题,但他们似乎是指xy像素坐标。

我问的实际片号xy从谷歌地图getTile()功能:

为了澄清这个问题...

给定getTile()函数中的x,y和zoom参数,如何找到图块的纬度和经度边界?

CoordMapType.prototype.getTile = function(coord, zoom, ownerDocument) {

    var x = coord.x,
    y = coord.y,
    url = "http://mt1.google.com/vt/lyrs=y&x="+x+"&y="+y+"&z="+zoom;
    //other stuff   
}

目前唯一需要这样做的原因是,我想确定此图块投影的最大缩放级别。从此链接:Maximum Zoom,它指出要找到最大缩放,我将需要使用的纬度和经度值getMaxZoomAtLatLng()因此,如果可以得到边界,则可以使用边界内的任何纬度和经度点来找到最大的Zoom。

我想到的替代方法是创建图像并检查src url是否有错误(对我来说,这似乎是一个糟糕的主意,因为我会提出许多错误的要求,只是检查图像是否存在)。

var img = new Image;
img.onload = function() {/*imagery exists*/ }
img.onerror = function() {/*past maximum zoom*/ }
img.src = url;

编辑:

经过进一步调查,我意识到该getMaxZoomAtLatLng()函数正在使用ajax调用,这不适合我的计划。但是我仍然对如何找到给定图块的纬度和经度边界感兴趣(这可能对其他应用程序很有用)。

莫勒博士

假设使用墨卡托投影和256x256的tileSize的基本Google地图:

每个(x轴和y轴)上的瓦片数为Math.pow(2,zoom),因此在缩放时0,地图使用1瓦片,在缩放14瓦片上,在缩放216瓦片上,依此类推。

首先计算瓷砖的西南/东北点。

磁贴的大小(以磅为单位)为 256/Math.pow(2,zoom)

西南点:

x = tile.x * tileSizeInPoints
y = (tile.y * tileSizeInPoints) + tileSizeInPoints

北东点:

x = (tile.x * tileSizeInPoints) + tileSizeInPoints
y = tile.y * tileSizeInPoints

这些点必须转换为LatLngs。使用地图时,可以使用地图投影的fromLatLngToPoint方法

对于自定义实现,请查看https://developers.google.com/maps/documentation/javascript/examples/map-coordinates

可能的独立于API的实现:

MERCATOR={

  fromLatLngToPoint:function(latLng){
     var siny =  Math.min(Math.max(Math.sin(latLng.lat* (Math.PI / 180)), 
                                   -.9999),
                          .9999);
     return {
      x: 128 + latLng.lng * (256/360),
      y: 128 + 0.5 * Math.log((1 + siny) / (1 - siny)) * -(256 / (2 * Math.PI))
     };
  },

  fromPointToLatLng: function(point){

     return {
      lat: (2 * Math.atan(Math.exp((point.y - 128) / -(256 / (2 * Math.PI)))) -
             Math.PI / 2)/ (Math.PI / 180),
      lng:  (point.x - 128) / (256 / 360)
     };

  },

  getTileAtLatLng:function(latLng,zoom){
    var t=Math.pow(2,zoom),
        s=256/t,
        p=this.fromLatLngToPoint(latLng);
        return {x:Math.floor(p.x/s),y:Math.floor(p.y/s),z:zoom};
  },

  getTileBounds:function(tile){
    tile=this.normalizeTile(tile);
    var t=Math.pow(2,tile.z),
        s=256/t,
        sw={x:tile.x*s,
            y:(tile.y*s)+s},
        ne={x:tile.x*s+s,
            y:(tile.y*s)};
        return{sw:this.fromPointToLatLng(sw),
               ne:this.fromPointToLatLng(ne)
              }
  },
  normalizeTile:function(tile){
    var t=Math.pow(2,tile.z);
    tile.x=((tile.x%t)+t)%t;
    tile.y=((tile.y%t)+t)%t;
    return tile;
  }

}

MERCATOR.getTileBounds()通过使用以下格式提供单个对象作为参数来进行调用

{
 x:tileIndexX,
 y:tileIndexY,
 z:zoom 
}

演示:http : //jsfiddle.net/doktormolle/55Nke/

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从Google Maps xy和zoom参数获取纬度和经度边界

来自分类Dev

获取多边形中每个点的纬度和经度-Google Maps API v3

来自分类Dev

是否可以从google maps API获取过去旅行过的地方的经度,纬度和时间戳?

来自分类Dev

在InfoWindow中显示Google Maps标记的纬度和经度

来自分类Dev

根据纬度和经度重点关注Google Maps API

来自分类Dev

来自Google Maps Api JSON的经度和纬度?

来自分类Dev

解析 Google Maps API 的纬度和经度 (Bash)

来自分类Dev

如何使用 PHP JSON 对象从 Google Maps API 获取 5 个附近地点的纬度和经度?

来自分类Dev

如何获取圆的边界的经度和纬度以创建该标记?

来自分类Dev

如何在多维数组 iOS Google Maps 应用程序中存储纬度和经度值?

来自分类Dev

如何从 NodeJS 中的 Google Maps JSON 响应访问纬度和经度

来自分类Dev

使用react-google-maps从谷歌地图获取纬度/经度

来自分类Dev

Google Maps API:分别获取经度/纬度

来自分类Dev

REGEX:从Google Maps静态图片网址中提取经度和纬度

来自分类Dev

检查纬度和经度的公式在没有Google Maps Api的区域内

来自分类Dev

Angular Google Maps Markers-经度和纬度的不同属性名称

来自分类Dev

Google Maps API向信息窗口添加标记的纬度和经度

来自分类Dev

在ASP.NET中从Google Maps API Version3上的代码绑定经度和纬度

来自分类Dev

检查纬度和经度的公式在没有Google Maps Api的区域内

来自分类Dev

使用纬度和经度值从PHP发送URL到Google Maps

来自分类Dev

什么是存储Google Maps路径(经度和纬度的数组)的最佳方法

来自分类Dev

地理位置:使用纬度和经度填写表格。Google Maps API

来自分类Dev

如何在Android Google Maps中获取距指定点(Lat,Lng)X距离的纬度,经度

来自分类Dev

如何从Google地方地图中获取经度和纬度?

来自分类Dev

Google Places - 如何获取纬度和经度值

来自分类Dev

如何获取地址的经度和纬度?

来自分类Dev

DocumentFragment和Google Maps

来自分类Dev

给定点(经度,纬度),距离和方位角,如何获取新的经度和纬度

来自分类Dev

如何从具有纬度和经度的mysql地址表中获取纬度和经度的距离

Related 相关文章

  1. 1

    如何从Google Maps xy和zoom参数获取纬度和经度边界

  2. 2

    获取多边形中每个点的纬度和经度-Google Maps API v3

  3. 3

    是否可以从google maps API获取过去旅行过的地方的经度,纬度和时间戳?

  4. 4

    在InfoWindow中显示Google Maps标记的纬度和经度

  5. 5

    根据纬度和经度重点关注Google Maps API

  6. 6

    来自Google Maps Api JSON的经度和纬度?

  7. 7

    解析 Google Maps API 的纬度和经度 (Bash)

  8. 8

    如何使用 PHP JSON 对象从 Google Maps API 获取 5 个附近地点的纬度和经度?

  9. 9

    如何获取圆的边界的经度和纬度以创建该标记?

  10. 10

    如何在多维数组 iOS Google Maps 应用程序中存储纬度和经度值?

  11. 11

    如何从 NodeJS 中的 Google Maps JSON 响应访问纬度和经度

  12. 12

    使用react-google-maps从谷歌地图获取纬度/经度

  13. 13

    Google Maps API:分别获取经度/纬度

  14. 14

    REGEX:从Google Maps静态图片网址中提取经度和纬度

  15. 15

    检查纬度和经度的公式在没有Google Maps Api的区域内

  16. 16

    Angular Google Maps Markers-经度和纬度的不同属性名称

  17. 17

    Google Maps API向信息窗口添加标记的纬度和经度

  18. 18

    在ASP.NET中从Google Maps API Version3上的代码绑定经度和纬度

  19. 19

    检查纬度和经度的公式在没有Google Maps Api的区域内

  20. 20

    使用纬度和经度值从PHP发送URL到Google Maps

  21. 21

    什么是存储Google Maps路径(经度和纬度的数组)的最佳方法

  22. 22

    地理位置:使用纬度和经度填写表格。Google Maps API

  23. 23

    如何在Android Google Maps中获取距指定点(Lat,Lng)X距离的纬度,经度

  24. 24

    如何从Google地方地图中获取经度和纬度?

  25. 25

    Google Places - 如何获取纬度和经度值

  26. 26

    如何获取地址的经度和纬度?

  27. 27

    DocumentFragment和Google Maps

  28. 28

    给定点(经度,纬度),距离和方位角,如何获取新的经度和纬度

  29. 29

    如何从具有纬度和经度的mysql地址表中获取纬度和经度的距离

热门标签

归档