【问题标题】:Equivalent of getBoundsZoomLevel() in gmaps api 3 [duplicate]相当于gmaps api 3中的getBoundsZoomLevel() [重复]
【发布时间】:2012-04-07 21:13:15
【问题描述】:

在 API v2 中,地图对象有一个方便的方法 getBoundsZoomLevel()。我用它来获得最适合边界的缩放级别,然后以某种方式操纵这个最佳缩放级别,最后设置所需的缩放级别。

我在API v3 中找不到类似的功能。 (从 v2 迁移到 v3 时,这是多么令人沮丧的经历)

我真的必须再次使用map.fitBounds()map.getZoom()、操纵和setZoom()吗?真是愚蠢!

【问题讨论】:

  • 谢谢@Dr.Molle。可惜你必须为此编写自己的函数,所以在这种情况下,我更喜欢我上面提出的愚蠢的解决方案。但我会用你的链接another problem,谢谢!!
  • +1 - 我很惊讶你没有收到更多的赞成票。
  • map.fitBounds() 中缺少什么?到目前为止,将地图集中在边界上似乎做得很好,并达到适合地图大小和边界大小的缩放级别

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


【解决方案1】:

下面是我实现的一个函数:

/**
* Returns the zoom level at which the given rectangular region fits in the map view. 
* The zoom level is computed for the currently selected map type. 
* @param {google.maps.Map} map
* @param {google.maps.LatLngBounds} bounds 
* @return {Number} zoom level
**/
function getZoomByBounds( map, bounds ){
  var MAX_ZOOM = map.mapTypes.get( map.getMapTypeId() ).maxZoom || 21 ;
  var MIN_ZOOM = map.mapTypes.get( map.getMapTypeId() ).minZoom || 0 ;

  var ne= map.getProjection().fromLatLngToPoint( bounds.getNorthEast() );
  var sw= map.getProjection().fromLatLngToPoint( bounds.getSouthWest() ); 

  var worldCoordWidth = Math.abs(ne.x-sw.x);
  var worldCoordHeight = Math.abs(ne.y-sw.y);

  //Fit padding in pixels 
  var FIT_PAD = 40;

  for( var zoom = MAX_ZOOM; zoom >= MIN_ZOOM; --zoom ){ 
      if( worldCoordWidth*(1<<zoom)+2*FIT_PAD < $(map.getDiv()).width() && 
          worldCoordHeight*(1<<zoom)+2*FIT_PAD < $(map.getDiv()).height() )
          return zoom;
  }
  return 0;
}

【讨论】:

  • 谢谢!您的代码产生与旧 v2 getZoomByBounds 相同的值
  • +1 出色的工作......效果很好。 TY
  • 可以用(map.getDiv()).style.width代替$(map.getDiv()).width(),也和height一样。
  • @Jaykishan 我想你的意思是 .offsetWidth 和 .offsetHeight (样式属性可能没有设置)
  • 我一直在寻找这个超过 3 小时。我什至写了一个检查器来检查随机边界,这个函数在我完成的 20,000 次随机检查中起作用。似乎总是与谷歌所说的有界缩放相匹配。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-06
  • 2021-10-09
  • 2013-09-22
  • 2012-06-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多