11/**
2- * AngularJS Google Maps Ver. 1.16.8
2+ * AngularJS Google Maps Ver. 1.17.0
33 *
44 * The MIT License (MIT)
55 *
@@ -128,6 +128,9 @@ angular.module('ngMap', []);
128128 for ( var k2 in vm . map . customMarkers ) {
129129 bounds . extend ( vm . map . customMarkers [ k2 ] . getPosition ( ) ) ;
130130 }
131+ if ( vm . mapOptions . maximumZoom ) {
132+ vm . enableMaximumZoomCheck = true ; //enable zoom check after resizing for markers
133+ }
131134 vm . map . fitBounds ( bounds ) ;
132135 } ;
133136
@@ -236,6 +239,18 @@ angular.module('ngMap', []);
236239 $parse ( $attrs . mapInitialized ) ( $scope , { map : vm . map } ) ;
237240 }
238241 } ) ;
242+
243+ //add maximum zoom listeners if zoom-to-include-markers and and maximum-zoom are valid attributes
244+ if ( mapOptions . zoomToIncludeMarkers && mapOptions . maximumZoom ) {
245+ google . maps . event . addListener ( vm . map , 'zoom_changed' , function ( ) {
246+ if ( vm . enableMaximumZoomCheck == true ) {
247+ vm . enableMaximumZoomCheck = false ;
248+ google . maps . event . addListenerOnce ( vm . map , 'bounds_changed' , function ( ) {
249+ vm . map . setZoom ( Math . min ( mapOptions . maximumZoom , vm . map . getZoom ( ) ) ) ;
250+ } ) ;
251+ }
252+ } ) ;
253+ }
239254 } ;
240255
241256 $scope . google = google ; //used by $scope.eval to avoid eval()
@@ -257,7 +272,14 @@ angular.module('ngMap', []);
257272 vm . eventListeners = { } ;
258273
259274 if ( options . lazyInit ) { // allows controlled initialization
260- vm . map = { id : $attrs . id } ; //set empty, not real, map
275+ // parse angular expression for dynamic ids
276+ if ( ! ! $attrs . id && $attrs . id . startsWith ( '{{' ) && $attrs . id . endsWith ( '}}' ) ) {
277+ var idExpression = $attrs . id . slice ( 2 , - 2 ) ;
278+ var mapId = $parse ( idExpression ) ( $scope ) ;
279+ } else {
280+ var mapId = $attrs . id ;
281+ }
282+ vm . map = { id : mapId } ; //set empty, not real, map
261283 NgMap . addMap ( vm ) ;
262284 } else {
263285 vm . initializeMap ( ) ;
@@ -563,7 +585,7 @@ angular.module('ngMap', []);
563585
564586 scope . $watch ( '[' + varsToWatch . join ( ',' ) + ']' , function ( ) {
565587 customMarker . setContent ( orgHtml , scope ) ;
566- } ) ;
588+ } , true ) ;
567589
568590 customMarker . setContent ( element [ 0 ] . innerHTML , scope ) ;
569591 var classNames = element [ 0 ] . firstElementChild . className ;
@@ -1554,7 +1576,7 @@ angular.module('ngMap', []);
15541576 return {
15551577 restrict : 'AE' ,
15561578 controller : '__MapController' ,
1557- conrollerAs : 'ngmap'
1579+ controllerAs : 'ngmap'
15581580 } ;
15591581 } ;
15601582
@@ -2807,10 +2829,27 @@ angular.module('ngMap', []);
28072829 return map ;
28082830 } ;
28092831
2810- var find = function ( el ) { //jshint ignore:line
2832+ var findById = function ( el , id ) {
2833+ var notInUseMap ;
2834+ for ( var i = 0 ; i < mapInstances . length ; i ++ ) {
2835+ var map = mapInstances [ i ] ;
2836+ if ( map . id == id && ! map . inUse ) {
2837+ var mapDiv = map . getDiv ( ) ;
2838+ el . appendChild ( mapDiv ) ;
2839+ notInUseMap = map ;
2840+ break ;
2841+ }
2842+ }
2843+ return notInUseMap ;
2844+ } ;
2845+
2846+ var findUnused = function ( el ) { //jshint ignore:line
28112847 var notInUseMap ;
28122848 for ( var i = 0 ; i < mapInstances . length ; i ++ ) {
28132849 var map = mapInstances [ i ] ;
2850+ if ( map . id ) {
2851+ continue ;
2852+ }
28142853 if ( ! map . inUse ) {
28152854 var mapDiv = map . getDiv ( ) ;
28162855 el . appendChild ( mapDiv ) ;
@@ -2828,7 +2867,7 @@ angular.module('ngMap', []);
28282867 * @return map instance for the given element
28292868 */
28302869 var getMapInstance = function ( el ) {
2831- var map = find ( el ) ;
2870+ var map = findById ( el , el . id ) || findUnused ( el ) ;
28322871 if ( ! map ) {
28332872 map = add ( el ) ;
28342873 } else {
@@ -2923,15 +2962,14 @@ angular.module('ngMap', []);
29232962 /**
29242963 * @memberof NgMap
29252964 * @function getMap
2926- * @param {Hash } options optional, e.g., {id: 'foo, timeout: 5000}
2965+ * @param {String } optional, id e.g., 'foo'
29272966 * @returns promise
29282967 */
2929- var getMap = function ( options ) {
2930- options = options || { } ;
2931- var deferred = $q . defer ( ) ;
2968+ var getMap = function ( id ) {
2969+ id = typeof id === 'object' ? id . id : id ;
29322970
2933- var id = options . id || 0 ;
2934- var timeout = options . timeout || 2000 ;
2971+ var deferred = $q . defer ( ) ;
2972+ var timeout = 2000 ;
29352973
29362974 function waitForMap ( timeElapsed ) {
29372975 if ( mapControllers [ id ] ) {
0 commit comments