@@ -11,6 +11,7 @@ interface GoogleMapOptions {
11
11
language ?: string ;
12
12
region ?: string ;
13
13
mapIds ?: string [ ] ;
14
+ version ?: string ;
14
15
}
15
16
16
17
/**
@@ -35,19 +36,30 @@ export default class GoogleMap {
35
36
const scriptTag = document . createElement ( 'script' ) ;
36
37
const defaultLanguage = window . navigator . language . slice ( 0 , 2 ) ;
37
38
const defaultRegion = window . navigator . language . slice ( 3 , 5 ) ;
39
+
40
+ const {
41
+ libraries,
42
+ mapIds,
43
+ version,
44
+ language,
45
+ region,
46
+ googleMapsAPIKey,
47
+ onLoadScript
48
+ } = options ;
49
+
38
50
scriptTag . setAttribute ( 'type' , 'text/javascript' ) ;
39
51
scriptTag . setAttribute (
40
52
'src' ,
41
- `https://maps.googleapis.com/maps/api/js?key=${
42
- options . googleMapsAPIKey
43
- } &language= ${ options . language || defaultLanguage } & region=${ options . region || defaultRegion } ${
44
- options . libraries ? `&libraries=${ options . libraries . join ( ',' ) } ` : ''
45
- } ${
46
- options . mapIds ? `&map_ids =${ options . mapIds . join ( ',' ) } ` : ''
53
+ `https://maps.googleapis.com/maps/api/js?key=${ googleMapsAPIKey } &language= ${
54
+ language || defaultLanguage
55
+ } ®ion=${ region || defaultRegion } ${
56
+ libraries ? `&libraries=${ libraries . join ( ',' ) } ` : ''
57
+ } ${ mapIds ? `&map_ids= ${ mapIds . join ( ',' ) } ` : '' } ${
58
+ version ? `&v =${ version } ` : ''
47
59
} `
48
60
) ;
49
61
scriptTag . onload = ( ) : void => {
50
- options . onLoadScript ( ) ;
62
+ onLoadScript ( ) ;
51
63
this . initMap ( options ) ;
52
64
} ;
53
65
document . getElementsByTagName ( 'head' ) [ 0 ] . appendChild ( scriptTag ) ;
@@ -81,9 +93,11 @@ export default class GoogleMap {
81
93
*/
82
94
public destroyComplete = ( ) : void => {
83
95
if ( this . map ) {
84
- document . querySelectorAll ( 'script[src^="https://maps.googleapis.com"]' ) . forEach ( script => {
85
- script . remove ( ) ;
86
- } ) ;
96
+ document
97
+ . querySelectorAll ( 'script[src^="https://maps.googleapis.com"]' )
98
+ . forEach ( ( script ) => {
99
+ script . remove ( ) ;
100
+ } ) ;
87
101
if ( window . google && window . google . maps ) {
88
102
// @ts -ignore: The operand of a 'delete' operator must be optional.
89
103
delete window . google . maps ;
0 commit comments