46

默认情况下,谷歌地图地形视图可以无限平移地图图块。您可以使用它LatLngBounds()来限制这一点,但是我应该使用哪些最大和最小坐标来将视口设置为地球而不是地图区域之外?

北美坐标:

var strictBounds = new google.maps.LatLngBounds(
    new google.maps.LatLng(28.70, -127.50), 
    new google.maps.LatLng(48.85, -55.90)
);

我试过(+90, -180)(-90,180)没有运气。

4

4 回答 4

92

@Marcelo & @Doc 提供的链接有助于理解Lat Lng 的推导

但是,如果您只想了解Google Maps最大界限

Latitude: -85 to +85由于某种原因实际上是-85.05115

Longitude: -180 to +180

在 Google 地图上亲自尝试一下:

(您可能需要缩小。看看大头针是如何在世界的“边缘” - 这些是限制

所以在你的代码中尝试

var strictBounds = new google.maps.LatLngBounds(
    new google.maps.LatLng(85, -180),           // top left corner of map
    new google.maps.LatLng(-85, 180)            // bottom right corner
);

得到答案后,请编辑此 wiki(或更新您的问题)。谢谢

于 2012-12-11T16:40:32.003 回答
12

请参阅旧 Google Groups 中的这篇文章,其中描述了投影的数学。

引用:

地图不是从 85 度开始的,而是使地图呈正方形的度数。这可以简单地计算为:atan(sinh(PI)) *180 / PI = 85.05112878....

请注意,该帖子中的平铺计算适用于旧 API V2,但投影应该相同。

于 2012-08-08T16:12:26.617 回答
9

您可以在 Google Maps 的帮助下执行以下操作以获取世界的 Max Lat 和 Long 边界:

1:设置谷歌地图的缩放级别 1 设置谷歌地图的东西:

mapOptions = {
                zoom: 1,
 .....
}

2. 执行以下操作以获取此地图的 NorthEast 和 SouthWest Bound :

map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);

     // NorthEast Latitude : 89.45016124669523
     var latNEValue =  map.getBounds().getNorthEast().lat();
    // NorthEast Longitude : 180
     var longNEValue = map.getBounds().getNorthEast().lng();
     // SouthWest Latitude : -87.71179927260242
     var latSWValue =  map.getBounds().getSouthWest().lat();
     // Southwest Latitude :  -180
     var longSWValue = map.getBounds().getSouthWest().lng();

3.它会给你以下东北和西南边界:

东北纬:89.45016124669523

东北经:180

西南纬度:-87.71179927260242

西南经度:-180

同样在 Zoom Level-0 上,它给出以下几点:

东北纬:89.99346179538875

东北经:180

西南纬度:-89.98155760646617

西南经度:-180

以上技巧帮助我解决了需要最大纬度/经度的业务问题。

于 2015-12-11T12:05:26.270 回答
3

有关 GPS 值的更多详细信息,您可以阅读本文

文章解释说:

  • 纬度是沿格林威治子午线测量的距赤道的距离。该距离以度为单位,范围在南北 0º 到 90º 之间。
  • 经度是沿赤道测量的距格林威治子午线的距离。该距离以度为单位,范围从东和西 0º 到 180º。
于 2012-08-07T16:02:55.630 回答