javascript googleapis gmaps api 3의 getBoundsZoomLevel()과 같습니다.



https maps googleapis com maps api key (1)

API v2에서 map 객체는 편리한 메소드 getBoundsZoomLevel ()을가 집니다. 경계에 가장 잘 맞는 줌 레벨을 얻은 다음이 최적의 줌 레벨을 어떻게 든 조작하고 원하는 줌 레벨을 최종적으로 설정했습니다.

API v3 에서 비슷한 기능을 찾을 수 없습니다. (v2에서 v3으로 전환 할 때 계속해서 실망스런 경험을 한 적이 있습니다.)

map.fitBounds() , map.getZoom() , manipulate 및 setZoom() 다시 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;
}




google-maps-api-2