【问题标题】:Maximum Lat and Long bounds for the world - Google Maps API LatLngBounds()世界的最大纬度和经度界限 - Google Maps API LatLngBounds()
【发布时间】:2012-08-04 16:25:51
【问题描述】:

默认情况下,Google 地图地形视图可以无限平移地图图块。您可以使用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) 没有成功。

【问题讨论】:

  • 在墨卡托投影上,纬度上升到 85 和 -85,而不是 90。
  • 墨卡托投影不限于从 85° 到 -85° 的纬度。它只是在极端纬度变得越来越扭曲,而谷歌地图会在这些纬度附近切断投影。

标签: javascript google-maps google-maps-api-3 latitude-longitude


【解决方案1】:

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

文章说明:

  • 纬度是从赤道沿格林威治子午线测量的距离。该距离以度为单位,范围在南北 0º 到 90º 之间。
  • 经度是沿赤道测量的距格林威治子午线的距离。该距离以度数为单位,范围从东和西 0º 到 180º。

【讨论】:

  • 那么简而言之,为 NW 点和 SW 采样最大和最小坐标?
  • 很奇怪,当你看the official google map API doc时,它真的在纬度90/-90和经度180/-180之间,在你的latlong声明中,你没有颠倒经纬度?跨度>
  • 不,我的代码适用于美国人口统计纬度范围。
【解决方案2】:

请参阅旧版 Google 网上论坛中的 this post,其中描述了投影的数学运算。

引用:

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

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

【讨论】:

  • 所有我正在寻找的都是经过测试的,工作最大最小坐标?
  • 然后看帖子,理解并测试坐标。我不会为你做作业,孩子。
【解决方案3】:

@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(或更新您的问题)。谢谢

【讨论】:

  • 谢谢。我必须为 java 使用以下内容: private static final LatLngBounds EARTH = new LatLngBounds( new LatLng(-84.9, -180), // 地图左上角 new LatLng(84.9, 180) // 右下角 );
  • From developers.google.com/maps/documentation/javascript/reference/3/… LatLngBounds 是 SW 角 (-85, -180) 到 NE 角 (+85, +180),而不是答案中的左上角到右下角。
  • 在折线工具中试过这个,但似乎没有给出整个区域,这是一个非常常见的问题。然而,它是最大和最小可能的经度和纬度值。 keene.edu/campus/maps/tool/…
【解决方案4】:

您可以在 Google 地图的帮助下执行以下操作以获取世界的最大纬度和经度范围:

1:在设置 Google Map Stuff 时设置 Google Maps 的缩放级别 1:

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

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

map = new google.maps.Map(document.getElementById('map-canvas'), 地图选项);

     // 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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多