Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google maps 获取谷歌地图上显示的总度数纬度/经度(world wraps时)-Javascript v3 API_Google Maps_Google Maps Api 3 - Fatal编程技术网

Google maps 获取谷歌地图上显示的总度数纬度/经度(world wraps时)-Javascript v3 API

Google maps 获取谷歌地图上显示的总度数纬度/经度(world wraps时)-Javascript v3 API,google-maps,google-maps-api-3,Google Maps,Google Maps Api 3,我正在写一些在谷歌地图上聚类标记的代码。聚类算法依赖于知道用户当前可以看到多少纬度和经度,因为我将地图分成一个由n/map\u像素\u宽度xn/map\u像素\u高度正方形组成的网格,并且需要知道每个正方形中的纬度/经度,以知道每个标记点属于哪个正方形 在地图不包裹的正常情况下,使用Google map对象上的getBounds()并进行计算以计算返回的东北点和西南点之间的纬度和纵向距离相对容易。我遇到的问题是地图被缩小到覆盖整个地球1次的程度。例如,我可以缩小地图,使整个地球“平铺”5次,相当

我正在写一些在谷歌地图上聚类标记的代码。聚类算法依赖于知道用户当前可以看到多少纬度和经度,因为我将地图分成一个由
n/map\u像素\u宽度
x
n/map\u像素\u高度
正方形组成的网格,并且需要知道每个正方形中的纬度/经度,以知道每个标记点属于哪个正方形

在地图不包裹的正常情况下,使用Google map对象上的
getBounds()
并进行计算以计算返回的东北点和西南点之间的纬度和纵向距离相对容易。我遇到的问题是地图被缩小到覆盖整个地球1次的程度。例如,我可以缩小地图,使整个地球“平铺”5次,相当于
360*5=1800
纵向角度和,但是调用
getBounds()
不再提供有用的信息:


m、 getBounds().getNorthEast().lat()
88.31833020528785
m、 getBounds().getNorthEast().lng()
180
m、 getBounds().getSouthWest().lat()
-88.5485785544835
m、 getBounds().getSouthWest().lng()
-180

基本上,经度
getBounds()
报告只是整个地球的最小值和最大值,而这并没有说明地球重复了多少次。虽然谷歌地图不会垂直平铺地图(如果放大到足够远,它只会插入灰色的文件空间),但从概念上讲,我也有同样的问题——我需要知道垂直区域会占用多少总空间度

有没有一种方法可以获得可见纵向角度的总数?

因此,基于另一个问题,我找到了一种(黑客)方法来解决这个问题。基本上,Google Maps类有一个返回对象的
getProjection()
方法,该方法又有一个
getWorldWidth()
方法,该方法返回当前缩放级别的世界宽度(以像素为单位)。因此,解决问题的方法是:

  • 将虚拟覆盖视图添加到实际上不显示覆盖的地图
  • 获取覆盖层的投影
  • 从投影中获取世界宽度
  • 计算可见纵向度数,如地图元素的像素宽度/世界宽度,以像素为单位*360
  • 如果有一种方法可以在不创建虚拟覆盖的情况下实现这一点会更好,但是这种方法似乎很有效