1
1
/**
2
- * AngularJS Google Maps Ver. 1.16.8
2
+ * AngularJS Google Maps Ver. 1.17.0
3
3
*
4
4
* The MIT License (MIT)
5
5
*
@@ -128,6 +128,9 @@ angular.module('ngMap', []);
128
128
for ( var k2 in vm . map . customMarkers ) {
129
129
bounds . extend ( vm . map . customMarkers [ k2 ] . getPosition ( ) ) ;
130
130
}
131
+ if ( vm . mapOptions . maximumZoom ) {
132
+ vm . enableMaximumZoomCheck = true ; //enable zoom check after resizing for markers
133
+ }
131
134
vm . map . fitBounds ( bounds ) ;
132
135
} ;
133
136
@@ -236,6 +239,18 @@ angular.module('ngMap', []);
236
239
$parse ( $attrs . mapInitialized ) ( $scope , { map : vm . map } ) ;
237
240
}
238
241
} ) ;
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
+ }
239
254
} ;
240
255
241
256
$scope . google = google ; //used by $scope.eval to avoid eval()
@@ -257,7 +272,14 @@ angular.module('ngMap', []);
257
272
vm . eventListeners = { } ;
258
273
259
274
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
261
283
NgMap . addMap ( vm ) ;
262
284
} else {
263
285
vm . initializeMap ( ) ;
@@ -563,7 +585,7 @@ angular.module('ngMap', []);
563
585
564
586
scope . $watch ( '[' + varsToWatch . join ( ',' ) + ']' , function ( ) {
565
587
customMarker . setContent ( orgHtml , scope ) ;
566
- } ) ;
588
+ } , true ) ;
567
589
568
590
customMarker . setContent ( element [ 0 ] . innerHTML , scope ) ;
569
591
var classNames = element [ 0 ] . firstElementChild . className ;
@@ -1554,7 +1576,7 @@ angular.module('ngMap', []);
1554
1576
return {
1555
1577
restrict : 'AE' ,
1556
1578
controller : '__MapController' ,
1557
- conrollerAs : 'ngmap'
1579
+ controllerAs : 'ngmap'
1558
1580
} ;
1559
1581
} ;
1560
1582
@@ -2807,10 +2829,27 @@ angular.module('ngMap', []);
2807
2829
return map ;
2808
2830
} ;
2809
2831
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
2811
2847
var notInUseMap ;
2812
2848
for ( var i = 0 ; i < mapInstances . length ; i ++ ) {
2813
2849
var map = mapInstances [ i ] ;
2850
+ if ( map . id ) {
2851
+ continue ;
2852
+ }
2814
2853
if ( ! map . inUse ) {
2815
2854
var mapDiv = map . getDiv ( ) ;
2816
2855
el . appendChild ( mapDiv ) ;
@@ -2828,7 +2867,7 @@ angular.module('ngMap', []);
2828
2867
* @return map instance for the given element
2829
2868
*/
2830
2869
var getMapInstance = function ( el ) {
2831
- var map = find ( el ) ;
2870
+ var map = findById ( el , el . id ) || findUnused ( el ) ;
2832
2871
if ( ! map ) {
2833
2872
map = add ( el ) ;
2834
2873
} else {
@@ -2923,15 +2962,14 @@ angular.module('ngMap', []);
2923
2962
/**
2924
2963
* @memberof NgMap
2925
2964
* @function getMap
2926
- * @param {Hash } options optional, e.g., {id: 'foo, timeout: 5000}
2965
+ * @param {String } optional, id e.g., 'foo'
2927
2966
* @returns promise
2928
2967
*/
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 ;
2932
2970
2933
- var id = options . id || 0 ;
2934
- var timeout = options . timeout || 2000 ;
2971
+ var deferred = $q . defer ( ) ;
2972
+ var timeout = 2000 ;
2935
2973
2936
2974
function waitForMap ( timeElapsed ) {
2937
2975
if ( mapControllers [ id ] ) {
0 commit comments