相当于gmaps-api3中的getBoundsZoomLevel()

Equivalent of getBoundsZoomLevel() in gmaps api 3

本文关键字:getBoundsZoomLevel 中的 gmaps-api3 相当于      更新时间:2023-09-26

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

在API v3中找不到类似的函数。(当从v2移动到v3时,这是一次多么令人沮丧的经历)

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

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

/**
* 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;
}
相关文章:
  • 没有找到相关文章