{"version":3,"sources":["webpack:///./src/pages/root/components/utilities/GeoAnalysisMapModal.vue?01e1","webpack:///./src/assets/images/MapClusters/cluster45.png","webpack:///./node_modules/google-maps/lib/Google.js","webpack:///./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack:///./src/assets/images/MapClusters/cluster35.png","webpack:///./src/assets/images/MapClusters/cluster55.png","webpack:///./src/pages/root/components/utilities/GeoAnalysisMapModal.vue?3846","webpack:///./src/components/shared/scripts/map/mapUtilities.js","webpack:///src/pages/root/components/utilities/GeoAnalysisMapModal.vue","webpack:///./src/pages/root/components/utilities/GeoAnalysisMapModal.vue?d331","webpack:///./src/pages/root/components/utilities/GeoAnalysisMapModal.vue","webpack:///./node_modules/@google/markerclusterer/dist/markerclusterer.esm.js"],"names":["module","exports","window","Error","googleVersion","script","google","loading","callbacks","onLoadEvents","originalCreateLoaderMethod","GoogleMapsLoader","VERSION","WINDOW_CALLBACK_NAME","_googleMockApiObject","load","fn","push","ready","createLoader","document","createElement","type","src","createUrl","body","appendChild","isLoaded","url","URL","KEY","LIBRARIES","length","join","CLIENT","CHANNEL","LANGUAGE","REGION","release","parentElement","removeChild","onLoad","makeMock","i","_slicedToArray","arr","Array","isArray","_arr","_n","_d","_e","undefined","_s","_i","Symbol","iterator","next","done","value","err","TypeError","mapUtilities","initMap","mapRef","callback","map","maps","Map","zoom","center","lat","lng","initMarkers","googleMapsObject","locations","markers","current","point","LatLng","latitude","longitude","marker","Marker","draggable","position","title","initClusters","coordinates","styles","require","height","width","anchorText","textColor","textSize","fontFamily","location","label","icon","MarkerClusterer","this","addresses","inputs","physicianLocations","physicians","$refs","modal","open","component","_h","$createElement","_c","_self","ref","attrs","staticStyle","options","__file","opt_markers","opt_options","extend","OverlayView","map_","MARKER_CLUSTER_IMAGE_PATH_","MARKER_CLUSTER_IMAGE_EXTENSION_","markers_","clusters_","sizes","styles_","ready_","gridSize_","minClusterSize_","maxZoom_","imagePath_","imageExtension_","zoomOnClick_","averageCenter_","setupStyles_","setMap","prevZoom_","getZoom","that","event","addListener","minZoom","maxZoom","Math","min","mapTypes","getMapTypeId","max","resetViewport","redraw","Object","keys","addMarkers","obj1","obj2","object","property","prototype","apply","setReady_","size","getMarkers","bounds","LatLngBounds","getPosition","fitBounds","numStyles","index","count","dv","parseInt","text","calculator","calculator_","opt_nodraw","pushMarkerTo_","isAdded","repaint","indexOf","m","splice","removed","removeMarker_","markersCopy","slice","r","createClusters_","projection","getProjection","tr","getNorthEast","bl","getSouthWest","trPix","fromLatLngToDivPixel","x","y","blPix","ne","fromDivPixelToLatLng","sw","contains","opt_hide","cluster","remove","oldClusters","setTimeout","p1","p2","dLat","PI","dLon","a","sin","cos","atan2","sqrt","distance","clusterToAddTo","getCenter","d","distanceBetweenPoints_","isMarkerInClusterBounds","addMarker","Cluster","mapBounds","getBounds","getExtendedBounds","isMarkerInBounds_","addToClosestCluster_","markerClusterer","markerClusterer_","getMap","getGridSize","getMinClusterSize","isAverageCenter","center_","bounds_","clusterIcon_","ClusterIcon","getStyles","isMarkerAlreadyAdded","l","calculateBounds_","len","updateIcon","mz","getMaxZoom","hide","sums","getCalculator","setCenter","setSums","show","opt_padding","getMarkerClusterer","padding_","cluster_","div_","sums_","visible_","clusterBounds","trigger","isZoomOnClick","pos","getPosFromLatLng_","style","cssText","createCss","innerHTML","getPanes","overlayMouseTarget","addDomListener","triggerClusterClick","latlng","width_","height_","top","left","zIndex","MAX_ZINDEX","display","parentNode","text_","index_","useStyle","url_","textColor_","anchor_","textSize_","backgroundPosition_","backgroundPosition","txtColor","txtSize"],"mappings":";oIAAA,uBAAwiB,G,qBCAxiBA,EAAOC,QAAU,0xG,uBCAjB,uBAEC,GAAa,eAYJC,SAAW,YAAcA,OAAS,MAX1C,MAAM,IAAIC,MAAM,wDAIF,0BAAd,EAOgD,WAGjD,aAGA,IAAIC,EAAgB,OAEhBC,EAAS,KAETC,EAAS,KAETC,GAAU,EAEVC,EAAY,GAEZC,EAAe,GAEfC,EAA6B,KAG7BC,EAAmB,CAGvB,IAAuB,0CAEvB,IAAuB,KAEvB,UAA6B,GAE7B,OAA0B,KAE1B,QAA2B,KAE3B,SAA4B,KAE5B,OAA0B,MAE1BA,EAAiBC,QAAUR,EAE3BO,EAAiBE,qBAAuB,6CAGxCF,EAAiBG,qBAAuB,GAGxCH,EAAiBI,KAAO,SAASC,GACjB,OAAXV,GACa,IAAZC,EACCS,GACHR,EAAUS,KAAKD,IAGhBT,GAAU,EAEVL,OAAOS,EAAiBE,sBAAwB,WAC/CK,EAAMF,IAGPL,EAAiBQ,gBAERH,GACVA,EAAGV,IAKLK,EAAiBQ,aAAe,YAC/Bd,EAASe,SAASC,cAAc,WACzBC,KAAO,kBACdjB,EAAOkB,IAAMZ,EAAiBa,YAE9BJ,SAASK,KAAKC,YAAYrB,IAI3BM,EAAiBgB,SAAW,WAC3B,OAAkB,OAAXrB,GAIRK,EAAiBa,UAAY,WAC5B,IAAII,EAAMjB,EAAiBkB,IAgC3B,OA9BAD,GAAO,aAAejB,EAAiBE,qBAEnCF,EAAiBmB,MACpBF,GAAO,QAAUjB,EAAiBmB,KAG/BnB,EAAiBoB,UAAUC,OAAS,IACvCJ,GAAO,cAAgBjB,EAAiBoB,UAAUE,KAAK,MAGpDtB,EAAiBuB,SACpBN,GAAO,WAAajB,EAAiBuB,QAGlCvB,EAAiBwB,UACpBP,GAAO,YAAcjB,EAAiBwB,SAGnCxB,EAAiByB,WACpBR,GAAO,aAAejB,EAAiByB,UAGpCzB,EAAiB0B,SACpBT,GAAO,WAAajB,EAAiB0B,QAGlC1B,EAAiBC,UACpBgB,GAAO,MAAQjB,EAAiBC,SAG1BgB,GAIRjB,EAAiB2B,QAAU,SAAStB,GACnC,IAAIsB,EAAU,WACb3B,EAAiBmB,IAAM,KACvBnB,EAAiBoB,UAAY,GAC7BpB,EAAiBuB,OAAS,KAC1BvB,EAAiBwB,QAAU,KAC3BxB,EAAiByB,SAAW,KAC5BzB,EAAiB0B,OAAS,KAC1B1B,EAAiBC,QAAUR,EAE3BE,EAAS,KACTC,GAAU,EACVC,EAAY,GACZC,EAAe,QAEc,IAAlBP,OAAOI,eACVJ,OAAOI,YAG8C,IAAlDJ,OAAOS,EAAiBE,8BAC3BX,OAAOS,EAAiBE,sBAGG,OAA/BH,IACHC,EAAiBQ,aAAeT,EAChCA,EAA6B,MAGf,OAAXL,IACHA,EAAOkC,cAAcC,YAAYnC,GACjCA,EAAS,MAGNW,GACHA,KAIET,EACHI,EAAiBI,MAAK,WACrBuB,OAGDA,KAKF3B,EAAiB8B,OAAS,SAASzB,GAClCP,EAAaQ,KAAKD,IAInBL,EAAiB+B,SAAW,WAC3BhC,EAA6BC,EAAiBQ,aAE9CR,EAAiBQ,aAAe,WAC/BjB,OAAOI,OAASK,EAAiBG,qBACjCZ,OAAOS,EAAiBE,0BAK1B,IAAIK,EAAQ,SAASF,GACpB,IAAI2B,EAQJ,IANApC,GAAU,EAEK,OAAXD,IACHA,EAASJ,OAAOI,QAGZqC,EAAI,EAAGA,EAAIlC,EAAauB,OAAQW,IACpClC,EAAakC,GAAGrC,GAOjB,IAJIU,GACHA,EAAGV,GAGCqC,EAAI,EAAGA,EAAInC,EAAUwB,OAAQW,IACjCnC,EAAUmC,GAAGrC,GAGdE,EAAY,IAIb,OAAOG,IArNQ,kCAPhB,I,kCCGe,SAASiC,EAAeC,EAAKF,GAC1C,OCJa,SAAyBE,GACtC,GAAIC,MAAMC,QAAQF,GAAM,OAAOA,EDGxB,CAAeA,IEJT,SAA+BA,EAAKF,GACjD,IAAIK,EAAO,GACPC,GAAK,EACLC,GAAK,EACLC,OAAKC,EAET,IACE,IAAK,IAAiCC,EAA7BC,EAAKT,EAAIU,OAAOC,cAAmBP,GAAMI,EAAKC,EAAGG,QAAQC,QAChEV,EAAK/B,KAAKoC,EAAGM,QAEThB,GAAKK,EAAKhB,SAAWW,GAH8CM,GAAK,IAK9E,MAAOW,GACPV,GAAK,EACLC,EAAKS,EACL,QACA,IACOX,GAAsB,MAAhBK,EAAW,QAAWA,EAAW,SAC5C,QACA,GAAIJ,EAAI,MAAMC,GAIlB,OAAOH,EFnBuB,CAAqBH,EAAKF,IGJ3C,WACb,MAAM,IAAIkB,UAAU,wDHG0C,GAJhE,mC,qBIAA7D,EAAOC,QAAU,8/F,qBCAjBD,EAAOC,QAAU,k/H,oFCAjB,ICG4B,MCoB5B,I,iFDpBa6D,EAAe,CAClBC,SADkB,kDACVC,EAAQC,GADE,gFAEpBtD,IAAiBmB,IAAM,0CACvBnB,IAAiBoB,UAAY,CAAC,UAC9BpB,IAAiBC,QAAU,GAE3BD,IAAiBI,MAAK,SAAUT,GAC5B,IAAI4D,EAAM,IAAI5D,EAAO6D,KAAKC,IAAIJ,EAAQ,CAClCK,KAAM,EACNC,OAAQ,CAACC,IAAK,UAAWC,KAAM,aAEnCP,EAASC,EAAK5D,MAXE,+FAclBmE,aAdkB,kDAcNP,EAAKQ,EAAkBC,GAdjB,8FAgBpB,IADIC,EAAU,GACLjC,EAAI,EAAGA,EAAIgC,EAAU3C,OAAQW,IAC9BkC,EAAUF,EAAUhC,GACpBmC,EAAQ,IAAIJ,EAAiBP,KAAKY,OAAOF,EAAQG,SAAUH,EAAQI,WACnEC,EAAS,IAAIR,EAAiBP,KAAKgB,OAAO,CAC1CjB,IAAKA,EACLkB,WAAW,EACXC,SAAUP,EACVQ,MAAO,KAEXV,EAAQ3D,KAAKiE,GAzBG,yBA2BbN,GA3Ba,iGA6BlBW,cA7BkB,kDA6BLrB,EAAKQ,EAAkBc,GA7BlB,wFA8BhBC,EAAS,CACT,CACI7D,IAAK8D,EAAQ,QACbC,OAAQ,GACRC,MAAO,GACPC,WAAY,CAAC,GAAI,GACjBC,UAAW,QACXC,SAAU,GACVC,WAAY,uCAEhB,CACIpE,IAAK8D,EAAQ,QACbC,OAAQ,GACRC,MAAO,GACPC,WAAY,CAAC,GAAI,GACjBC,UAAW,QACXC,SAAU,GACVC,WAAY,uCAEhB,CACIpE,IAAK8D,EAAQ,QACbC,OAAQ,GACRC,MAAO,GACPC,WAAY,CAAC,GAAI,GACjBC,UAAW,QACXC,SAAU,GACVC,WAAY,wCAGhBpB,EAAUY,EAAYtB,KAAI,SAAU+B,EAAUtD,GAC9C,OAAO,IAAI+B,EAAiBP,KAAKgB,OAAO,CACpCE,SAAU,IAAIX,EAAiBP,KAAKY,OAAOkB,EAASjB,SAAUiB,EAAShB,WACvEiB,MAAO,GACPC,KAAMT,EAAQ,aAGtB,IAAIU,IAAgBlC,EAAKU,EAAS,CAACa,WAlEf,kGEH8W,EDc1Y,CACE,KAAF,sBACE,KAFF,WAGI,MAAJ,CACM,IAAN,KACM,UAAN,GACM,mBAAN,KAGE,QAAF,CACI,WADJ,cAAM,mBAAN,iBACA,GADQ,IAAR,QAAQ,OAAR,yFAEA,aACA,iDACA,yDAJA,0CAEgB,EAFhB,KAEgB,EAFhB,KAMgBY,KAAKC,UAAYC,EACjBF,KAAKG,mBAAqBC,EAC1BJ,KAAKK,MAAMC,MAAMC,OARjC,UASA,iBATA,yBAUA,4CAVA,iDAAM,SAAN,GAAQ,OAAR,0BAYI,cAZJ,cAAM,mBAAN,iBAYA,KAZQ,OAAR,gFAagBP,KAAKnC,IAAMA,EAb3B,SAcA,yCAdA,uBAeA,mDAfA,gDAAM,SAAN,KAAQ,OAAR,4B,wBEfI2C,EAAY,YACd,GJTW,WAAa,IAAiBC,EAATT,KAAgBU,eAAmBC,EAAnCX,KAA0CY,MAAMD,IAAIF,EAAG,OAAOE,EAAG,WAAW,CAACE,IAAI,QAAQC,MAAM,CAAC,KAAO,WAAW,MAAQ,iBAAiB,CAAC,CAACH,EAAG,MAAM,CAACG,MAAM,CAAC,GAAK,kBAAkB,CAACH,EAAG,MAAM,CAACE,IAAI,MAAME,YAAY,CAAC,MAAQ,OAAO,OAAS,SAASD,MAAM,CAAC,GAAK,aAAa,KAC7R,IIWpB,EACA,KACA,WACA,MAIFN,EAAUQ,QAAQC,OAAS,0BACZ,UAAAT,E,2CC0Cf,MAAMT,EACJ,YAAYlC,EAAKqD,EAAaC,GAC5BnB,KAAKoB,OAAOrB,EAAiB9F,OAAO6D,KAAKuD,aACzCrB,KAAKsB,KAAOzD,EAQZmC,KAAKuB,2BAA6B,cASlCvB,KAAKwB,gCAAkC,MAKvCxB,KAAKyB,SAAW,GAKhBzB,KAAK0B,UAAY,GAEjB1B,KAAK2B,MAAQ,CAAC,GAAI,GAAI,GAAI,GAAI,IAK9B3B,KAAK4B,QAAU,GAMf5B,KAAK6B,QAAS,EAEd,IAAIb,EAAUG,GAAe,GAM7BnB,KAAK8B,UAAYd,EAAkB,UAAK,GAKxChB,KAAK+B,gBAAkBf,EAA4B,oBAAK,EAOxDhB,KAAKgC,SAAWhB,EAAiB,SAAK,KAEtChB,KAAK4B,QAAUZ,EAAgB,QAAK,GAMpChB,KAAKiC,WAAajB,EAAmB,WACnChB,KAAKuB,2BAMPvB,KAAKkC,gBAAkBlB,EAAwB,gBAC7ChB,KAAKwB,gCAMPxB,KAAKmC,cAAe,EAEUpF,MAA1BiE,EAAqB,cACvBhB,KAAKmC,aAAenB,EAAqB,aAO3ChB,KAAKoC,gBAAiB,EAEUrF,MAA5BiE,EAAuB,gBACzBhB,KAAKoC,eAAiBpB,EAAuB,eAG/ChB,KAAKqC,eAELrC,KAAKsC,OAAOzE,GAMZmC,KAAKuC,UAAYvC,KAAKsB,KAAKkB,UAG3B,IAAIC,EAAOzC,KACX/F,OAAO6D,KAAK4E,MAAMC,YAAY3C,KAAKsB,KAAM,gBAAgB,WAEvD,IAAItD,EAAOyE,EAAKnB,KAAKkB,UACjBI,EAAUH,EAAKnB,KAAKsB,SAAW,EAC/BC,EAAUC,KAAKC,IAAIN,EAAKnB,KAAKuB,SAAW,IAC1CJ,EAAKnB,KAAK0B,SAASP,EAAKnB,KAAK2B,gBAAgBJ,SAC/C7E,EAAO8E,KAAKC,IAAID,KAAKI,IAAIlF,EAAM4E,GAAUC,GAErCJ,EAAKF,WAAavE,IACpByE,EAAKF,UAAYvE,EACjByE,EAAKU,oBAITlJ,OAAO6D,KAAK4E,MAAMC,YAAY3C,KAAKsB,KAAM,QAAQ,WAC/CmB,EAAKW,YAIHlC,IAAgBA,EAAYvF,QAAU0H,OAAOC,KAAKpC,GAAavF,SACjEqE,KAAKuD,WAAWrC,GAAa,GAcjC,OAAOsC,EAAMC,GACX,OAAO,SAAWC,GAChB,IAAK,IAAIC,KAAYD,EAAOE,UAC1B5D,KAAK4D,UAAUD,GAAYD,EAAOE,UAAUD,GAE9C,OAAO3D,MACN6D,MAAML,EAAM,CAACC,IASlB,QACEzD,KAAK8D,WAAU,GAOjB,QAOA,eACE,IAAI9D,KAAK4B,QAAQjG,OAIjB,IAAK,IAAWoI,EAAPzH,EAAI,EAASyH,EAAO/D,KAAK2B,MAAMrF,GAAIA,IAC1C0D,KAAK4B,QAAQhH,KAAK,CAChBW,IAAKyE,KAAKiC,YAAc3F,EAAI,GAAK,IAAM0D,KAAKkC,gBAC5C5C,OAAQyE,EACRxE,MAAOwE,IAQb,kBAGE,IAFA,IAEgBlF,EAFZN,EAAUyB,KAAKgE,aACfC,EAAS,IAAIhK,OAAO6D,KAAKoG,aACpB5H,EAAI,EAAWuC,EAASN,EAAQjC,GAAIA,IAC3C2H,EAAO7C,OAAOvC,EAAOsF,eAGvBnE,KAAKsB,KAAK8C,UAAUH,GAStB,UAAU7E,GACRY,KAAK4B,QAAUxC,EASjB,YACE,OAAOY,KAAK4B,QASd,gBACE,OAAO5B,KAAKmC,aAQd,kBACE,OAAOnC,KAAKoC,eASd,aACE,OAAOpC,KAAKyB,SASd,kBACE,OAAOzB,KAAKyB,SAAS9F,OASvB,WAAWkH,GACT7C,KAAKgC,SAAWa,EASlB,aACE,OAAO7C,KAAKgC,SAYd,YAAYzD,EAAS8F,GAInB,IAHA,IAAIC,EAAQ,EACRC,EAAQhG,EAAQ5C,OAChB6I,EAAKD,EACK,IAAPC,GACLA,EAAKC,SAASD,EAAK,GAAI,IACvBF,IAIF,MAAO,CACLI,KAAMH,EACND,MAHFA,EAAQxB,KAAKC,IAAIuB,EAAOD,IAgB1B,cAAcM,GACZ3E,KAAK4E,YAAcD,EASrB,gBACE,OAAO3E,KAAK4E,YAUd,WAAWrG,EAASsG,GAClB,GAAItG,EAAQ5C,OACV,IAAK,IAAIW,EAAI,EAAWuC,EAASN,EAAQjC,GAAIA,IAC3C0D,KAAK8E,cAAcjG,QAEhB,GAAIwE,OAAOC,KAAK/E,GAAS5C,OAC9B,IAAK,IAAIkD,KAAUN,EACjByB,KAAK8E,cAAcvG,EAAQM,IAG1BgG,GACH7E,KAAKoD,SAWT,cAAcvE,GAEZ,GADAA,EAAOkG,SAAU,EACblG,EAAkB,UAAG,CAGvB,IAAI4D,EAAOzC,KACX/F,OAAO6D,KAAK4E,MAAMC,YAAY9D,EAAQ,WAAW,WAC/CA,EAAOkG,SAAU,EACjBtC,EAAKuC,aAGThF,KAAKyB,SAAS7G,KAAKiE,GAUrB,UAAUA,EAAQgG,GAChB7E,KAAK8E,cAAcjG,GACdgG,GACH7E,KAAKoD,SAYT,cAAcvE,GACZ,IAAIyF,GAAS,EACb,GAAItE,KAAKyB,SAASwD,QAChBX,EAAQtE,KAAKyB,SAASwD,QAAQpG,QAE9B,IAAK,IAAWqG,EAAP5I,EAAI,EAAM4I,EAAIlF,KAAKyB,SAASnF,GAAIA,IACvC,GAAI4I,GAAKrG,EAAQ,CACfyF,EAAQhI,EACR,MAKN,OAAc,GAAVgI,IAKJzF,EAAOyD,OAAO,MAEdtC,KAAKyB,SAAS0D,OAAOb,EAAO,IAErB,GAWT,aAAazF,EAAQgG,GACnB,IAAIO,EAAUpF,KAAKqF,cAAcxG,GAEjC,QAAKgG,IAAcO,KACjBpF,KAAKmD,gBACLnD,KAAKoD,UACE,GAaX,cAAc7E,EAASsG,GAMrB,IAHA,IAGgBhG,EAHZyG,EAAc/G,IAAYyB,KAAKgE,aAAezF,EAAQgH,QAAUhH,EAChE6G,GAAU,EAEL9I,EAAI,EAAWuC,EAASyG,EAAYhJ,GAAIA,IAAK,CACpD,IAAIkJ,EAAIxF,KAAKqF,cAAcxG,GAC3BuG,EAAUA,GAAWI,EAGvB,IAAKX,GAAcO,EAGjB,OAFApF,KAAKmD,gBACLnD,KAAKoD,UACE,EAWX,UAAUvI,GACHmF,KAAK6B,SACR7B,KAAK6B,OAAShH,EACdmF,KAAKyF,mBAUT,mBACE,OAAOzF,KAAK0B,UAAU/F,OASxB,SACE,OAAOqE,KAAKsB,KASd,OAAOzD,GACLmC,KAAKsB,KAAOzD,EASd,cACE,OAAOmC,KAAK8B,UASd,YAAYiC,GACV/D,KAAK8B,UAAYiC,EASnB,oBACE,OAAO/D,KAAK+B,gBAQd,kBAAkBgC,GAChB/D,KAAK+B,gBAAkBgC,EAUzB,kBAAkBE,GAChB,IAAIyB,EAAa1F,KAAK2F,gBAGlBC,EAAK,IAAI3L,OAAO6D,KAAKY,OAAOuF,EAAO4B,eAAe3H,MACpD+F,EAAO4B,eAAe1H,OACpB2H,EAAK,IAAI7L,OAAO6D,KAAKY,OAAOuF,EAAO8B,eAAe7H,MACpD+F,EAAO8B,eAAe5H,OAGpB6H,EAAQN,EAAWO,qBAAqBL,GAC5CI,EAAME,GAAKlG,KAAK8B,UAChBkE,EAAMG,GAAKnG,KAAK8B,UAEhB,IAAIsE,EAAQV,EAAWO,qBAAqBH,GAC5CM,EAAMF,GAAKlG,KAAK8B,UAChBsE,EAAMD,GAAKnG,KAAK8B,UAGhB,IAAIuE,EAAKX,EAAWY,qBAAqBN,GACrCO,EAAKb,EAAWY,qBAAqBF,GAMzC,OAHAnC,EAAO7C,OAAOiF,GACdpC,EAAO7C,OAAOmF,GAEPtC,EAYT,kBAAkBpF,EAAQoF,GACxB,OAAOA,EAAOuC,SAAS3H,EAAOsF,eAOhC,eACEnE,KAAKmD,eAAc,GAGnBnD,KAAKyB,SAAW,GAQlB,cAAcgF,GAEZ,IAAK,IAAWC,EAAPpK,EAAI,EAAYoK,EAAU1G,KAAK0B,UAAUpF,GAAIA,IACpDoK,EAAQC,SAIL,IAAW9H,EAAhB,IAASvC,EAAI,EAAWuC,EAASmB,KAAKyB,SAASnF,GAAIA,IACjDuC,EAAOkG,SAAU,EACb0B,GACF5H,EAAOyD,OAAO,MAIlBtC,KAAK0B,UAAY,GAMnB,UACE,IAAIkF,EAAc5G,KAAK0B,UAAU6D,QACjCvF,KAAK0B,UAAU/F,OAAS,EACxBqE,KAAKmD,gBACLnD,KAAKoD,SAILyD,YAAW,WACT,IAAK,IAAWH,EAAPpK,EAAI,EAAYoK,EAAUE,EAAYtK,GAAIA,IACjDoK,EAAQC,WAET,GAOL,SACE3G,KAAKyF,kBAaP,uBAAuBqB,EAAIC,GACzB,IAAKD,IAAOC,EACV,OAAO,EAGT,IACIC,GAAQD,EAAG7I,MAAQ4I,EAAG5I,OAAS4E,KAAKmE,GAAK,IACzCC,GAAQH,EAAG5I,MAAQ2I,EAAG3I,OAAS2E,KAAKmE,GAAK,IACzCE,EAAIrE,KAAKsE,IAAIJ,EAAO,GAAKlE,KAAKsE,IAAIJ,EAAO,GAC3ClE,KAAKuE,IAAIP,EAAG5I,MAAQ4E,KAAKmE,GAAK,KAAOnE,KAAKuE,IAAIN,EAAG7I,MAAQ4E,KAAKmE,GAAK,KACnEnE,KAAKsE,IAAIF,EAAO,GAAKpE,KAAKsE,IAAIF,EAAO,GAGvC,OARQ,MAMA,EAAIpE,KAAKwE,MAAMxE,KAAKyE,KAAKJ,GAAIrE,KAAKyE,KAAK,EAAIJ,KAYrD,qBAAqBtI,GAInB,IAHA,IAiBM6H,EAjBFc,EAAW,IACXC,EAAiB,KAEZnL,GADCuC,EAAOsF,cACJ,GAAYuC,EAAU1G,KAAK0B,UAAUpF,GAAIA,IAAK,CACzD,IAAI2B,EAASyI,EAAQgB,YACrB,GAAIzJ,EAAQ,CACV,IAAI0J,EAAI3H,KAAK4H,uBAAuB3J,EAAQY,EAAOsF,eAC/CwD,EAAIH,IACNA,EAAWG,EACXF,EAAiBf,IAKnBe,GAAkBA,EAAeI,wBAAwBhJ,GAC3D4I,EAAeK,UAAUjJ,KAErB6H,EAAU,IAAIqB,EAAQ/H,OAClB8H,UAAUjJ,GAClBmB,KAAK0B,UAAU9G,KAAK8L,IAUxB,kBACE,GAAK1G,KAAK6B,OAUV,IAJA,IAIgBhD,EAJZmJ,EAAY,IAAI/N,OAAO6D,KAAKoG,aAAalE,KAAKsB,KAAK2G,YAAYlC,eACjE/F,KAAKsB,KAAK2G,YAAYpC,gBACpB5B,EAASjE,KAAKkI,kBAAkBF,GAE3B1L,EAAI,EAAWuC,EAASmB,KAAKyB,SAASnF,GAAIA,KAC5CuC,EAAOkG,SAAW/E,KAAKmI,kBAAkBtJ,EAAQoF,IACpDjE,KAAKoI,qBAAqBvJ,IAclC,MAAMkJ,EACJ,YAAYM,GACVrI,KAAKsI,iBAAmBD,EACxBrI,KAAKsB,KAAO+G,EAAgBE,SAC5BvI,KAAK8B,UAAYuG,EAAgBG,cACjCxI,KAAK+B,gBAAkBsG,EAAgBI,oBACvCzI,KAAKoC,eAAiBiG,EAAgBK,kBACtC1I,KAAK2I,QAAU,KACf3I,KAAKyB,SAAW,GAChBzB,KAAK4I,QAAU,KACf5I,KAAK6I,aAAe,IAAIC,EAAY9I,KAAMqI,EAAgBU,YACxDV,EAAgBG,eASpB,qBAAqB3J,GACnB,GAAImB,KAAKyB,SAASwD,QAChB,OAAyC,GAAlCjF,KAAKyB,SAASwD,QAAQpG,GAE7B,IAAK,IAAWqG,EAAP5I,EAAI,EAAM4I,EAAIlF,KAAKyB,SAASnF,GAAIA,IACvC,GAAI4I,GAAKrG,EACP,OAAO,EAIb,OAAO,EAUT,UAAUA,GACR,GAAImB,KAAKgJ,qBAAqBnK,GAC5B,OAAO,EAGT,GAAKmB,KAAK2I,SAIR,GAAI3I,KAAKoC,eAAgB,CACvB,IAAI6G,EAAIjJ,KAAKyB,SAAS9F,OAAS,EAC3BuC,GAAO8B,KAAK2I,QAAQzK,OAAS+K,EAAI,GAAKpK,EAAOsF,cAAcjG,OAAS+K,EACpE9K,GAAO6B,KAAK2I,QAAQxK,OAAS8K,EAAI,GAAKpK,EAAOsF,cAAchG,OAAS8K,EACxEjJ,KAAK2I,QAAU,IAAI1O,OAAO6D,KAAKY,OAAOR,EAAKC,GAC3C6B,KAAKkJ,yBARPlJ,KAAK2I,QAAU9J,EAAOsF,cACtBnE,KAAKkJ,mBAWPrK,EAAOkG,SAAU,EACjB/E,KAAKyB,SAAS7G,KAAKiE,GAEnB,IAAIsK,EAAMnJ,KAAKyB,SAAS9F,OAMxB,GALIwN,EAAMnJ,KAAK+B,iBAAmBlD,EAAO0J,UAAYvI,KAAKsB,MAExDzC,EAAOyD,OAAOtC,KAAKsB,MAGjB6H,GAAOnJ,KAAK+B,gBAEd,IAAK,IAAIzF,EAAI,EAAGA,EAAI6M,EAAK7M,IACvB0D,KAAKyB,SAASnF,GAAGgG,OAAO,MAS5B,OALI6G,GAAOnJ,KAAK+B,iBACdlD,EAAOyD,OAAO,MAGhBtC,KAAKoJ,cACE,EAST,qBACE,OAAOpJ,KAAKsI,iBASd,YAGE,IAFA,IAEgBzJ,EAFZoF,EAAS,IAAIhK,OAAO6D,KAAKoG,aAAalE,KAAK2I,QAAS3I,KAAK2I,SACzDpK,EAAUyB,KAAKgE,aACV1H,EAAI,EAAWuC,EAASN,EAAQjC,GAAIA,IAC3C2H,EAAO7C,OAAOvC,EAAOsF,eAEvB,OAAOF,EAOT,SACEjE,KAAK6I,aAAalC,SAClB3G,KAAKyB,SAAS9F,OAAS,SAChBqE,KAAKyB,SASd,UACE,OAAOzB,KAAKyB,SAAS9F,OASvB,aACE,OAAOqE,KAAKyB,SASd,YACE,OAAOzB,KAAK2I,QASd,mBACE,IAAI1E,EAAS,IAAIhK,OAAO6D,KAAKoG,aAAalE,KAAK2I,QAAS3I,KAAK2I,SAC7D3I,KAAK4I,QAAU5I,KAAKsI,iBAAiBJ,kBAAkBjE,GAUzD,wBAAwBpF,GACtB,OAAOmB,KAAK4I,QAAQpC,SAAS3H,EAAOsF,eAStC,SACE,OAAOnE,KAAKsB,KAOd,aACE,IAAItD,EAAOgC,KAAKsB,KAAKkB,UACjB6G,EAAKrJ,KAAKsI,iBAAiBgB,aAE/B,GAAID,GAAMrL,EAAOqL,EAEf,IAAK,IAAWxK,EAAPvC,EAAI,EAAWuC,EAASmB,KAAKyB,SAASnF,GAAIA,IACjDuC,EAAOyD,OAAOtC,KAAKsB,WAKvB,GAAItB,KAAKyB,SAAS9F,OAASqE,KAAK+B,gBAE9B/B,KAAK6I,aAAaU,WAFpB,CAMA,IAAIlF,EAAYrE,KAAKsI,iBAAiBS,YAAYpN,OAC9C6N,EAAOxJ,KAAKsI,iBAAiBmB,eAAtBzJ,CAAsCA,KAAKyB,SAAU4C,GAChErE,KAAK6I,aAAaa,UAAU1J,KAAK2I,SACjC3I,KAAK6I,aAAac,QAAQH,GAC1BxJ,KAAK6I,aAAae,SAqBtB,MAAMd,EACJ,YAAYpC,EAAStH,EAAQyK,GAC3BnD,EAAQoD,qBAAqB1I,OAAO0H,EAAa7O,OAAO6D,KAAKuD,aAE7DrB,KAAK4B,QAAUxC,EACfY,KAAK+J,SAAWF,GAAe,EAC/B7J,KAAKgK,SAAWtD,EAChB1G,KAAK2I,QAAU,KACf3I,KAAKsB,KAAOoF,EAAQ6B,SACpBvI,KAAKiK,KAAO,KACZjK,KAAKkK,MAAQ,KACblK,KAAKmK,UAAW,EAEhBnK,KAAKsC,OAAOtC,KAAKsB,MAOnB,sBACE,IAAI8I,EAAgBpK,KAAKgK,SAAS/B,YAC9BI,EAAkBrI,KAAKgK,SAASF,qBAGpC7P,OAAO6D,KAAK4E,MAAM2H,QAAQhC,EAAgB/G,KAAM,eAAgBtB,KAAKgK,UAEjE3B,EAAgBiC,kBAElBtK,KAAKsB,KAAK8C,UAAUgG,GACpBpK,KAAKsB,KAAKoI,UAAUU,EAAc1C,cAStC,QAEE,GADA1H,KAAKiK,KAAOlP,SAASC,cAAc,OAC/BgF,KAAKmK,SAAU,CACjB,IAAII,EAAMvK,KAAKwK,kBAAkBxK,KAAK2I,SACtC3I,KAAKiK,KAAKQ,MAAMC,QAAU1K,KAAK2K,UAAUJ,GACzCvK,KAAKiK,KAAKW,UAAY5K,KAAKkK,MAAMxF,KAGvB1E,KAAK6K,WACXC,mBAAmBzP,YAAY2E,KAAKiK,MAE1C,IAAIxH,EAAOzC,KACX/F,OAAO6D,KAAK4E,MAAMqI,eAAe/K,KAAKiK,KAAM,SAAS,WACnDxH,EAAKuI,yBAYT,kBAAkBC,GAChB,IAAIV,EAAMvK,KAAK2F,gBAAgBM,qBAAqBgF,GAGpD,OAFAV,EAAIrE,GAAKzB,SAASzE,KAAKkL,OAAS,EAAG,IACnCX,EAAIpE,GAAK1B,SAASzE,KAAKmL,QAAU,EAAG,IAC7BZ,EAQT,OACE,GAAIvK,KAAKmK,SAAU,CACjB,IAAII,EAAMvK,KAAKwK,kBAAkBxK,KAAK2I,SACtC3I,KAAKiK,KAAKQ,MAAMW,IAAMb,EAAIpE,EAAI,KAC9BnG,KAAKiK,KAAKQ,MAAMY,KAAOd,EAAIrE,EAAI,KAC/BlG,KAAKiK,KAAKQ,MAAMa,OAASrR,OAAO6D,KAAKgB,OAAOyM,WAAa,GAQ7D,OACMvL,KAAKiK,OACPjK,KAAKiK,KAAKQ,MAAMe,QAAU,QAE5BxL,KAAKmK,UAAW,EAOlB,OACE,GAAInK,KAAKiK,KAAM,CACb,IAAIM,EAAMvK,KAAKwK,kBAAkBxK,KAAK2I,SACtC3I,KAAKiK,KAAKQ,MAAMC,QAAU1K,KAAK2K,UAAUJ,GACzCvK,KAAKiK,KAAKQ,MAAMe,QAAU,GAE5BxL,KAAKmK,UAAW,EAOlB,SACEnK,KAAKsC,OAAO,MAQd,WACMtC,KAAKiK,MAAQjK,KAAKiK,KAAKwB,aACzBzL,KAAKuJ,OACLvJ,KAAKiK,KAAKwB,WAAWtP,YAAY6D,KAAKiK,MACtCjK,KAAKiK,KAAO,MAYhB,QAAQT,GACNxJ,KAAKkK,MAAQV,EACbxJ,KAAK0L,MAAQlC,EAAK9E,KAClB1E,KAAK2L,OAASnC,EAAKlF,MACftE,KAAKiK,OACPjK,KAAKiK,KAAKW,UAAYpB,EAAK9E,MAG7B1E,KAAK4L,WAOP,WACE,IAAItH,EAAQxB,KAAKI,IAAI,EAAGlD,KAAKkK,MAAM5F,MAAQ,GAC3CA,EAAQxB,KAAKC,IAAI/C,KAAK4B,QAAQjG,OAAS,EAAG2I,GAC1C,IAAImG,EAAQzK,KAAK4B,QAAQ0C,GACzBtE,KAAK6L,KAAOpB,EAAW,IACvBzK,KAAKmL,QAAUV,EAAc,OAC7BzK,KAAKkL,OAAST,EAAa,MAC3BzK,KAAK8L,WAAarB,EAAiB,UACnCzK,KAAK+L,QAAUtB,EAAc,OAC7BzK,KAAKgM,UAAYvB,EAAgB,SACjCzK,KAAKiM,oBAAsBxB,EAA0B,mBASvD,UAAUxM,GACR+B,KAAK2I,QAAU1K,EAUjB,UAAUsM,GACR,IAAIE,EAAQ,GACZA,EAAM7P,KAAK,wBAA0BoF,KAAK6L,KAAO,MACjD,IAAIK,EAAqBlM,KAAKiM,oBAAsBjM,KAAKiM,oBAAsB,MAC/ExB,EAAM7P,KAAK,uBAAyBsR,EAAqB,KAE7B,iBAAjBlM,KAAK+L,SACiB,iBAApB/L,KAAK+L,QAAQ,IAAmB/L,KAAK+L,QAAQ,GAAK,GAC3D/L,KAAK+L,QAAQ,GAAK/L,KAAKmL,QACvBV,EAAM7P,KAAK,WAAaoF,KAAKmL,QAAUnL,KAAK+L,QAAQ,IAClD,mBAAqB/L,KAAK+L,QAAQ,GAAK,OAEzCtB,EAAM7P,KAAK,UAAYoF,KAAKmL,QAAU,mBAAqBnL,KAAKmL,QAC9D,OAE2B,iBAApBnL,KAAK+L,QAAQ,IAAmB/L,KAAK+L,QAAQ,GAAK,GAC3D/L,KAAK+L,QAAQ,GAAK/L,KAAKkL,OACvBT,EAAM7P,KAAK,UAAYoF,KAAKkL,OAASlL,KAAK+L,QAAQ,IAChD,oBAAsB/L,KAAK+L,QAAQ,GAAK,OAE1CtB,EAAM7P,KAAK,SAAWoF,KAAKkL,OAAS,2BAGtCT,EAAM7P,KAAK,UAAYoF,KAAKmL,QAAU,mBACpCnL,KAAKmL,QAAU,aAAenL,KAAKkL,OAAS,0BAGhD,IAAIiB,EAAWnM,KAAK8L,WAAa9L,KAAK8L,WAAa,QAC/CM,EAAUpM,KAAKgM,UAAYhM,KAAKgM,UAAY,GAKhD,OAHAvB,EAAM7P,KAAK,uBAAyB2P,EAAIpE,EAAI,YAC1CoE,EAAIrE,EAAI,aAAeiG,EAAW,kCAClCC,EAAU,sDACL3B,EAAM7O,KAAK,KAIP","file":"js/vue-modals200.753c5c62.js","sourcesContent":["import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GeoAnalysisMapModal.vue?vue&type=style&index=0&id=a33d2644&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GeoAnalysisMapModal.vue?vue&type=style&index=0&id=a33d2644&scoped=true&lang=css&\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC0AAAAtCAYAAAA6GuKaAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAF0WlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOCAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE4LTA3LTI1VDE3OjAyOjM3LTA0OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDE4LTA3LTI1VDE3OjAyOjM3LTA0OjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOC0wNy0yNVQxNzowMjozNy0wNDowMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDplZjY0Y2E5YS1kNTliLTI2NDQtODE4Yy0yZDljNTM3MWE4ZWIiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo4MTQyMjQxYi01Mzc0LWZjNDAtODE5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\"","(function(root, factory) {\n\n\tif (root === null) {\n\t\tthrow new Error('Google-maps package can be used only in browser');\n\t}\n\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t} else if (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t} else {\n\t\troot.GoogleMapsLoader = factory();\n\t}\n\n})(typeof window !== 'undefined' ? window : null, function() {\n\n\n\t'use strict';\n\n\n\tvar googleVersion = '3.31';\n\n\tvar script = null;\n\n\tvar google = null;\n\n\tvar loading = false;\n\n\tvar callbacks = [];\n\n\tvar onLoadEvents = [];\n\n\tvar originalCreateLoaderMethod = null;\n\n\n\tvar GoogleMapsLoader = {};\n\n\n\tGoogleMapsLoader.URL = 'https://maps.googleapis.com/maps/api/js';\n\n\tGoogleMapsLoader.KEY = null;\n\n\tGoogleMapsLoader.LIBRARIES = [];\n\n\tGoogleMapsLoader.CLIENT = null;\n\n\tGoogleMapsLoader.CHANNEL = null;\n\n\tGoogleMapsLoader.LANGUAGE = null;\n\n\tGoogleMapsLoader.REGION = null;\n\n\tGoogleMapsLoader.VERSION = googleVersion;\n\n\tGoogleMapsLoader.WINDOW_CALLBACK_NAME = '__google_maps_api_provider_initializator__';\n\n\n\tGoogleMapsLoader._googleMockApiObject = {};\n\n\n\tGoogleMapsLoader.load = function(fn) {\n\t\tif (google === null) {\n\t\t\tif (loading === true) {\n\t\t\t\tif (fn) {\n\t\t\t\t\tcallbacks.push(fn);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tloading = true;\n\n\t\t\t\twindow[GoogleMapsLoader.WINDOW_CALLBACK_NAME] = function() {\n\t\t\t\t\tready(fn);\n\t\t\t\t};\n\n\t\t\t\tGoogleMapsLoader.createLoader();\n\t\t\t}\n\t\t} else if (fn) {\n\t\t\tfn(google);\n\t\t}\n\t};\n\n\n\tGoogleMapsLoader.createLoader = function() {\n\t\tscript = document.createElement('script');\n\t\tscript.type = 'text/javascript';\n\t\tscript.src = GoogleMapsLoader.createUrl();\n\n\t\tdocument.body.appendChild(script);\n\t};\n\n\n\tGoogleMapsLoader.isLoaded = function() {\n\t\treturn google !== null;\n\t};\n\n\n\tGoogleMapsLoader.createUrl = function() {\n\t\tvar url = GoogleMapsLoader.URL;\n\n\t\turl += '?callback=' + GoogleMapsLoader.WINDOW_CALLBACK_NAME;\n\n\t\tif (GoogleMapsLoader.KEY) {\n\t\t\turl += '&key=' + GoogleMapsLoader.KEY;\n\t\t}\n\n\t\tif (GoogleMapsLoader.LIBRARIES.length > 0) {\n\t\t\turl += '&libraries=' + GoogleMapsLoader.LIBRARIES.join(',');\n\t\t}\n\n\t\tif (GoogleMapsLoader.CLIENT) {\n\t\t\turl += '&client=' + GoogleMapsLoader.CLIENT;\n\t\t}\n\n\t\tif (GoogleMapsLoader.CHANNEL) {\n\t\t\turl += '&channel=' + GoogleMapsLoader.CHANNEL;\n\t\t}\n\n\t\tif (GoogleMapsLoader.LANGUAGE) {\n\t\t\turl += '&language=' + GoogleMapsLoader.LANGUAGE;\n\t\t}\n\n\t\tif (GoogleMapsLoader.REGION) {\n\t\t\turl += '®ion=' + GoogleMapsLoader.REGION;\n\t\t}\n\n\t\tif (GoogleMapsLoader.VERSION) {\n\t\t\turl += '&v=' + GoogleMapsLoader.VERSION;\n\t\t}\n\n\t\treturn url;\n\t};\n\n\n\tGoogleMapsLoader.release = function(fn) {\n\t\tvar release = function() {\n\t\t\tGoogleMapsLoader.KEY = null;\n\t\t\tGoogleMapsLoader.LIBRARIES = [];\n\t\t\tGoogleMapsLoader.CLIENT = null;\n\t\t\tGoogleMapsLoader.CHANNEL = null;\n\t\t\tGoogleMapsLoader.LANGUAGE = null;\n\t\t\tGoogleMapsLoader.REGION = null;\n\t\t\tGoogleMapsLoader.VERSION = googleVersion;\n\n\t\t\tgoogle = null;\n\t\t\tloading = false;\n\t\t\tcallbacks = [];\n\t\t\tonLoadEvents = [];\n\n\t\t\tif (typeof window.google !== 'undefined') {\n\t\t\t\tdelete window.google;\n\t\t\t}\n\n\t\t\tif (typeof window[GoogleMapsLoader.WINDOW_CALLBACK_NAME] !== 'undefined') {\n\t\t\t\tdelete window[GoogleMapsLoader.WINDOW_CALLBACK_NAME];\n\t\t\t}\n\n\t\t\tif (originalCreateLoaderMethod !== null) {\n\t\t\t\tGoogleMapsLoader.createLoader = originalCreateLoaderMethod;\n\t\t\t\toriginalCreateLoaderMethod = null;\n\t\t\t}\n\n\t\t\tif (script !== null) {\n\t\t\t\tscript.parentElement.removeChild(script);\n\t\t\t\tscript = null;\n\t\t\t}\n\n\t\t\tif (fn) {\n\t\t\t\tfn();\n\t\t\t}\n\t\t};\n\n\t\tif (loading) {\n\t\t\tGoogleMapsLoader.load(function() {\n\t\t\t\trelease();\n\t\t\t});\n\t\t} else {\n\t\t\trelease();\n\t\t}\n\t};\n\n\n\tGoogleMapsLoader.onLoad = function(fn) {\n\t\tonLoadEvents.push(fn);\n\t};\n\n\n\tGoogleMapsLoader.makeMock = function() {\n\t\toriginalCreateLoaderMethod = GoogleMapsLoader.createLoader;\n\n\t\tGoogleMapsLoader.createLoader = function() {\n\t\t\twindow.google = GoogleMapsLoader._googleMockApiObject;\n\t\t\twindow[GoogleMapsLoader.WINDOW_CALLBACK_NAME]();\n\t\t};\n\t};\n\n\n\tvar ready = function(fn) {\n\t\tvar i;\n\n\t\tloading = false;\n\n\t\tif (google === null) {\n\t\t\tgoogle = window.google;\n\t\t}\n\n\t\tfor (i = 0; i < onLoadEvents.length; i++) {\n\t\t\tonLoadEvents[i](google);\n\t\t}\n\n\t\tif (fn) {\n\t\t\tfn(google);\n\t\t}\n\n\t\tfor (i = 0; i < callbacks.length; i++) {\n\t\t\tcallbacks[i](google);\n\t\t}\n\n\t\tcallbacks = [];\n\t};\n\n\n\treturn GoogleMapsLoader;\n\n});\n","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAGu2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOCAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE4LTA3LTI1VDE3OjAyOjU1LTA0OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDE4LTA3LTI1VDE3OjAyOjU1LTA0OjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOC0wNy0yNVQxNzowMjo1NS0wNDowMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyNDI2MzViNC0xNjJjLTBlNGYtYTJiZi01MjMxOTY4NzZiZDkiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDoxNDFkZDU3MS0zMzkyLWQ3NGEtYmI5YS1mNGIwNTRmNjE5ZTMiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDozNmZlYjY1Ny03YmMzLTU2NDgtOGI0Ni0zMDQzODg3YTUzOWQiIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDozNmZlYjY1Ny03YmMzLTU2NDgtOGI0Ni0zMDQzODg3YTUzOWQiIHN0RXZ0OndoZW49IjIwMTgtMDctMjVUMTc6MDI6NTUtMDQ6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE4IChXaW5kb3dzKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MjQyNjM1YjQtMTYyYy0wZTRmLWEyYmYtNTIzMTk2ODc2YmQ5IiBzdEV2dDp3aGVuPSIyMDE4LTA3LTI1VDE3OjAyOjU1LTA0OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOCAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDxwaG90b3Nob3A6RG9jdW1lbnRBbmNlc3RvcnM+IDxyZGY6QmFnPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo2ODRhNWJlYi00YmVlLWZhNDQtYmRlNS0wYTJmNjE0NjY0OWU8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6ZDgwY2IzZTgtOWUyMS1kNjRlLWJhODAtYjAyMDdiZjhmOTQzPC9yZGY6bGk+IDwvcmRmOkJhZz4gPC9waG90b3Nob3A6RG9jdW1lbnRBbmNlc3RvcnM+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+byD7IwAAAdVJREFUWIXN2E9PE0EYB+Cnol6ticBZE+Vu4sEPINw5+OfuhUqQb2Bi/ABIpFy8ix44eRE/gtEziQneQUK9Qkg97Cy1427t2u60v2SSSbv7vk+TyWSmjW63a1pyadKAP3M5nzTe/pikQ/fpzR6mQq5gCQ9wD7fQDN91cIAv+IxPOBu2cBVME+toYbbkmfkw7mMNP7GFjQAdmGHXzGPs48UASFFuhHf2Q42RMDNo453sF/9v5kONdqhZGTODD1gZARFnJdQsBA3CbGB5jJA8y3hdBfMIqzVA8jwLPf6JaWKzRkieTb0toRSzjrkEmLnQqxRzVbaPpEor9CzELKq2j4ya2dCzFJM6S/kkxtxNDOnrGWPuJIbA7XwSY64lhvT1nKrDVYz5NQHDRc8Y8z0xpK9njPmaGALf8kmM2UsM6etZhDlOCDmSnZMLMad4kxDTDj0LMWSHqsMEkKPQ6yJFmI7sZF931kQ3hrJN773silFXtrATfzhoB36O3Rogu6H2XxmEOcdDbI8Rsh1qnlfF5KAWnhhtUR+GGq0yyDCYPDtYwEvV9qHj8M6CgjUSp8pduyO7qr6Snc4W9S7+18MzJ3oX/70wTuNC48DkOcPHMMaaxjT9c/UbOoJUdIJz7UgAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADcAAAA3CAYAAACo29JGAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAF0WlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOCAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE4LTA3LTI1VDE3OjAxOjQ1LTA0OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDE4LTA3LTI1VDE3OjAxOjQ1LTA0OjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOC0wNy0yNVQxNzowMTo0NS0wNDowMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpkMTY1MDNlYS0xMTUzLTM3NDMtYWUwYy02YzU3N2RhZWZlMDIiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDpkODc4MzQyMC0xMGE5LTNjNDctYTI0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\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ac-modal',{ref:\"modal\",attrs:{\"size\":'modal-lg',\"title\":'Coverage Map'}},[[_c('div',{attrs:{\"id\":\"map-container\"}},[_c('div',{ref:\"map\",staticStyle:{\"width\":\"100%\",\"height\":\"700px\"},attrs:{\"id\":\"map\"}})])]],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import GoogleMapsLoader from \"google-maps\";\nimport MarkerClusterer from '@google/markerclusterer';\n\nexport const mapUtilities = {\n async initMap(mapRef, callback) {\n GoogleMapsLoader.KEY = 'AIzaSyBULgN2oWltDQFqUfdnoAFSg76UcLTbvvM';\n GoogleMapsLoader.LIBRARIES = ['places'];\n GoogleMapsLoader.VERSION = '';\n let self = this;\n GoogleMapsLoader.load(function (google) {\n let map = new google.maps.Map(mapRef, {\n zoom: 5,\n center: {lat: 39.828473, lng: -98.579483}\n });\n callback(map, google);\n });\n },\n async initMarkers(map, googleMapsObject, locations) {\n let markers = [];\n for (let i = 0; i < locations.length; i++) {\n let current = locations[i];\n let point = new googleMapsObject.maps.LatLng(current.latitude, current.longitude);\n let marker = new googleMapsObject.maps.Marker({\n map: map,\n draggable: false,\n position: point,\n title: '',\n });\n markers.push(marker);\n }\n return markers;\n },\n async initClusters(map, googleMapsObject, coordinates) {\n let styles = [\n {\n url: require('@/assets/images/MapClusters/cluster35.png'),\n height: 35,\n width: 35,\n anchorText: [16, 0],\n textColor: 'white',\n textSize: 12,\n fontFamily: \"proxima-nova,Roboto,Arial,Helvetica\"\n },\n {\n url: require('@/assets/images/MapClusters/cluster45.png'),\n height: 45,\n width: 45,\n anchorText: [24, 0],\n textColor: 'white',\n textSize: 14,\n fontFamily: \"proxima-nova,Roboto,Arial,Helvetica\"\n },\n {\n url: require('@/assets/images/MapClusters/cluster55.png'),\n height: 55,\n width: 55,\n anchorText: [32, 0],\n textColor: 'white',\n textSize: 16,\n fontFamily: \"proxima-nova,Roboto,Arial,Helvetica\"\n }\n ];\n let markers = coordinates.map(function (location, i) {\n return new googleMapsObject.maps.Marker({\n position: new googleMapsObject.maps.LatLng(location.latitude, location.longitude),\n label: \"\",\n icon: require('@/assets/images/MapClusters/cluster35.png')\n });\n });\n new MarkerClusterer(map, markers, {styles});\n },\n\n};","\n \n \n \n \n \n\n\n\n\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GeoAnalysisMapModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GeoAnalysisMapModal.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./GeoAnalysisMapModal.vue?vue&type=template&id=a33d2644&scoped=true&\"\nimport script from \"./GeoAnalysisMapModal.vue?vue&type=script&lang=js&\"\nexport * from \"./GeoAnalysisMapModal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GeoAnalysisMapModal.vue?vue&type=style&index=0&id=a33d2644&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a33d2644\",\n null\n \n)\n\ncomponent.options.__file = \"GeoAnalysisMapModal.vue\"\nexport default component.exports","/**\n * @name MarkerClusterer for Google Maps v3\n * @author Luke Mahe\n * @fileoverview\n * The library creates and manages per-zoom-level clusters for large amounts of\n * markers.\n */\n\n/**\n * @license\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n/**\n * A Marker Clusterer that clusters markers.\n *\n * @param {google.maps.Map} map The Google map to attach to.\n * @param {Array.=} opt_markers Optional markers to add to\n * the cluster.\n * @param {Object=} opt_options support the following options:\n * 'gridSize': (number) The grid size of a cluster in pixels.\n * 'maxZoom': (number) The maximum zoom level that a marker can be part of a\n * cluster.\n * 'zoomOnClick': (boolean) Whether the default behaviour of clicking on a\n * cluster is to zoom into it.\n * 'imagePath': (string) The base URL where the images representing\n * clusters will be found. The full URL will be:\n * {imagePath}[1-5].{imageExtension}\n * Default: '../images/m'.\n * 'imageExtension': (string) The suffix for images URL representing\n * clusters will be found. See _imagePath_ for details.\n * Default: 'png'.\n * 'averageCenter': (boolean) Whether the center of each cluster should be\n * the average of all markers in the cluster.\n * 'minimumClusterSize': (number) The minimum number of markers to be in a\n * cluster before the markers are hidden and a count\n * is shown.\n * 'styles': (object) An object that has style properties:\n * 'url': (string) The image url.\n * 'height': (number) The image height.\n * 'width': (number) The image width.\n * 'anchor': (Array) The anchor position of the label text.\n * 'textColor': (string) The text color.\n * 'textSize': (number) The text size.\n * 'backgroundPosition': (string) The position of the backgound x, y.\n * @constructor\n * @extends google.maps.OverlayView\n */\n\n\n\nclass MarkerClusterer {\n constructor(map, opt_markers, opt_options) {\n this.extend(MarkerClusterer, google.maps.OverlayView);\n this.map_ = map;\n \n /**\n * The marker cluster image path.\n *\n * @type {string}\n * @private\n */\n this.MARKER_CLUSTER_IMAGE_PATH_ = '../images/m';\n\n\n /**\n * The marker cluster image path.\n *\n * @type {string}\n * @private\n */\n this.MARKER_CLUSTER_IMAGE_EXTENSION_ = 'png';\n /**\n * @type {Array.}\n * @private\n */\n this.markers_ = [];\n\n /**\n * @type {Array.}\n */\n this.clusters_ = [];\n\n this.sizes = [53, 56, 66, 78, 90];\n\n /**\n * @private\n */\n this.styles_ = [];\n\n /**\n * @type {boolean}\n * @private\n */\n this.ready_ = false;\n\n var options = opt_options || {};\n\n /**\n * @type {number}\n * @private\n */\n this.gridSize_ = options['gridSize'] || 60;\n\n /**\n * @private\n */\n this.minClusterSize_ = options['minimumClusterSize'] || 2;\n\n\n /**\n * @type {?number}\n * @private\n */\n this.maxZoom_ = options['maxZoom'] || null;\n\n this.styles_ = options['styles'] || [];\n\n /**\n * @type {string}\n * @private\n */\n this.imagePath_ = options['imagePath'] ||\n this.MARKER_CLUSTER_IMAGE_PATH_;\n\n /**\n * @type {string}\n * @private\n */\n this.imageExtension_ = options['imageExtension'] ||\n this.MARKER_CLUSTER_IMAGE_EXTENSION_;\n\n /**\n * @type {boolean}\n * @private\n */\n this.zoomOnClick_ = true;\n\n if (options['zoomOnClick'] != undefined) {\n this.zoomOnClick_ = options['zoomOnClick'];\n }\n\n /**\n * @type {boolean}\n * @private\n */\n this.averageCenter_ = false;\n\n if (options['averageCenter'] != undefined) {\n this.averageCenter_ = options['averageCenter'];\n }\n\n this.setupStyles_();\n\n this.setMap(map);\n\n /**\n * @type {number}\n * @private\n */\n this.prevZoom_ = this.map_.getZoom();\n\n // Add the map event listeners\n var that = this;\n google.maps.event.addListener(this.map_, 'zoom_changed', function () {\n // Determines map type and prevent illegal zoom levels\n var zoom = that.map_.getZoom();\n var minZoom = that.map_.minZoom || 0;\n var maxZoom = Math.min(that.map_.maxZoom || 100,\n that.map_.mapTypes[that.map_.getMapTypeId()].maxZoom);\n zoom = Math.min(Math.max(zoom, minZoom), maxZoom);\n\n if (that.prevZoom_ != zoom) {\n that.prevZoom_ = zoom;\n that.resetViewport();\n }\n });\n\n google.maps.event.addListener(this.map_, 'idle', function () {\n that.redraw();\n });\n\n // Finally, add the markers\n if (opt_markers && (opt_markers.length || Object.keys(opt_markers).length)) {\n this.addMarkers(opt_markers, false);\n }\n }\n\n\n\n /**\n * Extends a objects prototype by anothers.\n *\n * @param {Object} obj1 The object to be extended.\n * @param {Object} obj2 The object to extend with.\n * @return {Object} The new extended object.\n * @ignore\n */\n extend(obj1, obj2) {\n return (function (object) {\n for (var property in object.prototype) {\n this.prototype[property] = object.prototype[property];\n }\n return this;\n }).apply(obj1, [obj2]);\n }\n\n\n\n /**\n * Implementaion of the interface method.\n * @ignore\n */\n onAdd() {\n this.setReady_(true);\n };\n\n /**\n * Implementaion of the interface method.\n * @ignore\n */\n draw() { };\n\n /**\n * Sets up the styles object.\n *\n * @private\n */\n setupStyles_() {\n if (this.styles_.length) {\n return;\n }\n\n for (var i = 0, size; size = this.sizes[i]; i++) {\n this.styles_.push({\n url: this.imagePath_ + (i + 1) + '.' + this.imageExtension_,\n height: size,\n width: size\n });\n }\n }\n\n /**\n * Fit the map to the bounds of the markers in the clusterer.\n */\n fitMapToMarkers() {\n var markers = this.getMarkers();\n var bounds = new google.maps.LatLngBounds();\n for (var i = 0, marker; marker = markers[i]; i++) {\n bounds.extend(marker.getPosition());\n }\n\n this.map_.fitBounds(bounds);\n }\n\n\n /**\n * Sets the styles.\n *\n * @param {Object} styles The style to set.\n */\n setStyles(styles) {\n this.styles_ = styles;\n }\n\n\n /**\n * Gets the styles.\n *\n * @return {Object} The styles object.\n */\n getStyles() {\n return this.styles_;\n }\n\n\n /**\n * Whether zoom on click is set.\n *\n * @return {boolean} True if zoomOnClick_ is set.\n */\n isZoomOnClick() {\n return this.zoomOnClick_;\n }\n\n /**\n * Whether average center is set.\n *\n * @return {boolean} True if averageCenter_ is set.\n */\n isAverageCenter() {\n return this.averageCenter_;\n }\n\n\n /**\n * Returns the array of markers in the clusterer.\n *\n * @return {Array.} The markers.\n */\n getMarkers() {\n return this.markers_;\n }\n\n\n /**\n * Returns the number of markers in the clusterer\n *\n * @return {Number} The number of markers.\n */\n getTotalMarkers() {\n return this.markers_.length;\n }\n\n\n /**\n * Sets the max zoom for the clusterer.\n *\n * @param {number} maxZoom The max zoom level.\n */\n setMaxZoom(maxZoom) {\n this.maxZoom_ = maxZoom;\n }\n\n\n /**\n * Gets the max zoom for the clusterer.\n *\n * @return {number} The max zoom level.\n */\n getMaxZoom() {\n return this.maxZoom_;\n }\n\n\n /**\n * The function for calculating the cluster icon image.\n *\n * @param {Array.} markers The markers in the clusterer.\n * @param {number} numStyles The number of styles available.\n * @return {Object} A object properties: 'text' (string) and 'index' (number).\n * @private\n */\n calculator_(markers, numStyles) {\n var index = 0;\n var count = markers.length;\n var dv = count;\n while (dv !== 0) {\n dv = parseInt(dv / 10, 10);\n index++;\n }\n\n index = Math.min(index, numStyles);\n return {\n text: count,\n index: index\n };\n }\n\n\n /**\n * Set the calculator function.\n *\n * @param {function(Array, number)} calculator The function to set as the\n * calculator. The function should return a object properties:\n * 'text' (string) and 'index' (number).\n *\n */\n setCalculator(calculator) {\n this.calculator_ = calculator;\n }\n\n\n /**\n * Get the calculator function.\n *\n * @return {function(Array, number)} the calculator function.\n */\n getCalculator() {\n return this.calculator_;\n }\n\n\n /**\n * Add an array of markers to the clusterer.\n *\n * @param {Array.} markers The markers to add.\n * @param {boolean=} opt_nodraw Whether to redraw the clusters.\n */\n addMarkers(markers, opt_nodraw) {\n if (markers.length) {\n for (var i = 0, marker; marker = markers[i]; i++) {\n this.pushMarkerTo_(marker);\n }\n } else if (Object.keys(markers).length) {\n for (var marker in markers) {\n this.pushMarkerTo_(markers[marker]);\n }\n }\n if (!opt_nodraw) {\n this.redraw();\n }\n }\n\n\n /**\n * Pushes a marker to the clusterer.\n *\n * @param {google.maps.Marker} marker The marker to add.\n * @private\n */\n pushMarkerTo_(marker) {\n marker.isAdded = false;\n if (marker['draggable']) {\n // If the marker is draggable add a listener so we update the clusters on\n // the drag end.\n var that = this;\n google.maps.event.addListener(marker, 'dragend', function () {\n marker.isAdded = false;\n that.repaint();\n });\n }\n this.markers_.push(marker);\n }\n\n\n /**\n * Adds a marker to the clusterer and redraws if needed.\n *\n * @param {google.maps.Marker} marker The marker to add.\n * @param {boolean=} opt_nodraw Whether to redraw the clusters.\n */\n addMarker(marker, opt_nodraw) {\n this.pushMarkerTo_(marker);\n if (!opt_nodraw) {\n this.redraw();\n }\n }\n\n\n /**\n * Removes a marker and returns true if removed, false if not\n *\n * @param {google.maps.Marker} marker The marker to remove\n * @return {boolean} Whether the marker was removed or not\n * @private\n */\n removeMarker_(marker) {\n var index = -1;\n if (this.markers_.indexOf) {\n index = this.markers_.indexOf(marker);\n } else {\n for (var i = 0, m; m = this.markers_[i]; i++) {\n if (m == marker) {\n index = i;\n break;\n }\n }\n }\n\n if (index == -1) {\n // Marker is not in our list of markers.\n return false;\n }\n\n marker.setMap(null);\n\n this.markers_.splice(index, 1);\n\n return true;\n }\n\n\n /**\n * Remove a marker from the cluster.\n *\n * @param {google.maps.Marker} marker The marker to remove.\n * @param {boolean=} opt_nodraw Optional boolean to force no redraw.\n * @return {boolean} True if the marker was removed.\n */\n removeMarker(marker, opt_nodraw) {\n var removed = this.removeMarker_(marker);\n\n if (!opt_nodraw && removed) {\n this.resetViewport();\n this.redraw();\n return true;\n } else {\n return false;\n }\n }\n\n\n /**\n * Removes an array of markers from the cluster.\n *\n * @param {Array.} markers The markers to remove.\n * @param {boolean=} opt_nodraw Optional boolean to force no redraw.\n */\n removeMarkers(markers, opt_nodraw) {\n // create a local copy of markers if required\n // (removeMarker_ modifies the getMarkers() array in place)\n var markersCopy = markers === this.getMarkers() ? markers.slice() : markers;\n var removed = false;\n\n for (var i = 0, marker; marker = markersCopy[i]; i++) {\n var r = this.removeMarker_(marker);\n removed = removed || r;\n }\n\n if (!opt_nodraw && removed) {\n this.resetViewport();\n this.redraw();\n return true;\n }\n }\n\n\n /**\n * Sets the clusterer's ready state.\n *\n * @param {boolean} ready The state.\n * @private\n */\n setReady_(ready) {\n if (!this.ready_) {\n this.ready_ = ready;\n this.createClusters_();\n }\n }\n\n\n /**\n * Returns the number of clusters in the clusterer.\n *\n * @return {number} The number of clusters.\n */\n getTotalClusters() {\n return this.clusters_.length;\n }\n\n\n /**\n * Returns the google map that the clusterer is associated with.\n *\n * @return {google.maps.Map} The map.\n */\n getMap() {\n return this.map_;\n }\n\n\n /**\n * Sets the google map that the clusterer is associated with.\n *\n * @param {google.maps.Map} map The map.\n */\n setMap(map) {\n this.map_ = map;\n }\n\n\n /**\n * Returns the size of the grid.\n *\n * @return {number} The grid size.\n */\n getGridSize() {\n return this.gridSize_;\n }\n\n\n /**\n * Sets the size of the grid.\n *\n * @param {number} size The grid size.\n */\n setGridSize(size) {\n this.gridSize_ = size;\n }\n\n\n /**\n * Returns the min cluster size.\n *\n * @return {number} The grid size.\n */\n getMinClusterSize() {\n return this.minClusterSize_;\n }\n\n /**\n * Sets the min cluster size.\n *\n * @param {number} size The grid size.\n */\n setMinClusterSize(size) {\n this.minClusterSize_ = size;\n }\n\n\n /**\n * Extends a bounds object by the grid size.\n *\n * @param {google.maps.LatLngBounds} bounds The bounds to extend.\n * @return {google.maps.LatLngBounds} The extended bounds.\n */\n getExtendedBounds(bounds) {\n var projection = this.getProjection();\n\n // Turn the bounds into latlng.\n var tr = new google.maps.LatLng(bounds.getNorthEast().lat(),\n bounds.getNorthEast().lng());\n var bl = new google.maps.LatLng(bounds.getSouthWest().lat(),\n bounds.getSouthWest().lng());\n\n // Convert the points to pixels and the extend out by the grid size.\n var trPix = projection.fromLatLngToDivPixel(tr);\n trPix.x += this.gridSize_;\n trPix.y -= this.gridSize_;\n\n var blPix = projection.fromLatLngToDivPixel(bl);\n blPix.x -= this.gridSize_;\n blPix.y += this.gridSize_;\n\n // Convert the pixel points back to LatLng\n var ne = projection.fromDivPixelToLatLng(trPix);\n var sw = projection.fromDivPixelToLatLng(blPix);\n\n // Extend the bounds to contain the new bounds.\n bounds.extend(ne);\n bounds.extend(sw);\n\n return bounds;\n }\n\n\n /**\n * Determins if a marker is contained in a bounds.\n *\n * @param {google.maps.Marker} marker The marker to check.\n * @param {google.maps.LatLngBounds} bounds The bounds to check against.\n * @return {boolean} True if the marker is in the bounds.\n * @private\n */\n isMarkerInBounds_(marker, bounds) {\n return bounds.contains(marker.getPosition());\n }\n\n\n /**\n * Clears all clusters and markers from the clusterer.\n */\n clearMarkers() {\n this.resetViewport(true);\n\n // Set the markers a empty array.\n this.markers_ = [];\n }\n\n\n /**\n * Clears all existing clusters and recreates them.\n * @param {boolean} opt_hide To also hide the marker.\n */\n resetViewport(opt_hide) {\n // Remove all the clusters\n for (var i = 0, cluster; cluster = this.clusters_[i]; i++) {\n cluster.remove();\n }\n\n // Reset the markers to not be added and to be invisible.\n for (var i = 0, marker; marker = this.markers_[i]; i++) {\n marker.isAdded = false;\n if (opt_hide) {\n marker.setMap(null);\n }\n }\n\n this.clusters_ = [];\n }\n\n /**\n *\n */\n repaint() {\n var oldClusters = this.clusters_.slice();\n this.clusters_.length = 0;\n this.resetViewport();\n this.redraw();\n\n // Remove the old clusters.\n // Do it in a timeout so the other clusters have been drawn first.\n setTimeout(function () {\n for (var i = 0, cluster; cluster = oldClusters[i]; i++) {\n cluster.remove();\n }\n }, 0);\n }\n\n\n /**\n * Redraws the clusters.\n */\n redraw() {\n this.createClusters_();\n }\n\n\n /**\n * Calculates the distance between two latlng locations in km.\n * @see http://www.movable-type.co.uk/scripts/latlong.html\n *\n * @param {google.maps.LatLng} p1 The first lat lng point.\n * @param {google.maps.LatLng} p2 The second lat lng point.\n * @return {number} The distance between the two points in km.\n * @private\n */\n distanceBetweenPoints_(p1, p2) {\n if (!p1 || !p2) {\n return 0;\n }\n\n var R = 6371; // Radius of the Earth in km\n var dLat = (p2.lat() - p1.lat()) * Math.PI / 180;\n var dLon = (p2.lng() - p1.lng()) * Math.PI / 180;\n var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +\n Math.cos(p1.lat() * Math.PI / 180) * Math.cos(p2.lat() * Math.PI / 180) *\n Math.sin(dLon / 2) * Math.sin(dLon / 2);\n var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n var d = R * c;\n return d;\n }\n\n\n /**\n * Add a marker to a cluster, or creates a new cluster.\n *\n * @param {google.maps.Marker} marker The marker to add.\n * @private\n */\n addToClosestCluster_(marker) {\n var distance = 40000; // Some large number\n var clusterToAddTo = null;\n var pos = marker.getPosition();\n for (var i = 0, cluster; cluster = this.clusters_[i]; i++) {\n var center = cluster.getCenter();\n if (center) {\n var d = this.distanceBetweenPoints_(center, marker.getPosition());\n if (d < distance) {\n distance = d;\n clusterToAddTo = cluster;\n }\n }\n }\n\n if (clusterToAddTo && clusterToAddTo.isMarkerInClusterBounds(marker)) {\n clusterToAddTo.addMarker(marker);\n } else {\n var cluster = new Cluster(this);\n cluster.addMarker(marker);\n this.clusters_.push(cluster);\n }\n }\n\n\n /**\n * Creates the clusters.\n *\n * @private\n */\n createClusters_() {\n if (!this.ready_) {\n return;\n }\n\n // Get our current map view bounds.\n // Create a new bounds object so we don't affect the map.\n var mapBounds = new google.maps.LatLngBounds(this.map_.getBounds().getSouthWest(),\n this.map_.getBounds().getNorthEast());\n var bounds = this.getExtendedBounds(mapBounds);\n\n for (var i = 0, marker; marker = this.markers_[i]; i++) {\n if (!marker.isAdded && this.isMarkerInBounds_(marker, bounds)) {\n this.addToClosestCluster_(marker);\n }\n }\n }\n}\n\n/**\n * A cluster that contains markers.\n *\n * @param {MarkerClusterer} markerClusterer The markerclusterer that this\n * cluster is associated with.\n * @constructor\n * @ignore\n */\nclass Cluster {\n constructor(markerClusterer) {\n this.markerClusterer_ = markerClusterer;\n this.map_ = markerClusterer.getMap();\n this.gridSize_ = markerClusterer.getGridSize();\n this.minClusterSize_ = markerClusterer.getMinClusterSize();\n this.averageCenter_ = markerClusterer.isAverageCenter();\n this.center_ = null;\n this.markers_ = [];\n this.bounds_ = null;\n this.clusterIcon_ = new ClusterIcon(this, markerClusterer.getStyles(),\n markerClusterer.getGridSize());\n }\n\n /**\n * Determins if a marker is already added to the cluster.\n *\n * @param {google.maps.Marker} marker The marker to check.\n * @return {boolean} True if the marker is already added.\n */\n isMarkerAlreadyAdded(marker) {\n if (this.markers_.indexOf) {\n return this.markers_.indexOf(marker) != -1;\n } else {\n for (var i = 0, m; m = this.markers_[i]; i++) {\n if (m == marker) {\n return true;\n }\n }\n }\n return false;\n }\n\n\n /**\n * Add a marker the cluster.\n *\n * @param {google.maps.Marker} marker The marker to add.\n * @return {boolean} True if the marker was added.\n */\n addMarker(marker) {\n if (this.isMarkerAlreadyAdded(marker)) {\n return false;\n }\n\n if (!this.center_) {\n this.center_ = marker.getPosition();\n this.calculateBounds_();\n } else {\n if (this.averageCenter_) {\n var l = this.markers_.length + 1;\n var lat = (this.center_.lat() * (l - 1) + marker.getPosition().lat()) / l;\n var lng = (this.center_.lng() * (l - 1) + marker.getPosition().lng()) / l;\n this.center_ = new google.maps.LatLng(lat, lng);\n this.calculateBounds_();\n }\n }\n\n marker.isAdded = true;\n this.markers_.push(marker);\n\n var len = this.markers_.length;\n if (len < this.minClusterSize_ && marker.getMap() != this.map_) {\n // Min cluster size not reached so show the marker.\n marker.setMap(this.map_);\n }\n\n if (len == this.minClusterSize_) {\n // Hide the markers that were showing.\n for (var i = 0; i < len; i++) {\n this.markers_[i].setMap(null);\n }\n }\n\n if (len >= this.minClusterSize_) {\n marker.setMap(null);\n }\n\n this.updateIcon();\n return true;\n }\n\n\n /**\n * Returns the marker clusterer that the cluster is associated with.\n *\n * @return {MarkerClusterer} The associated marker clusterer.\n */\n getMarkerClusterer() {\n return this.markerClusterer_;\n }\n\n\n /**\n * Returns the bounds of the cluster.\n *\n * @return {google.maps.LatLngBounds} the cluster bounds.\n */\n getBounds() {\n var bounds = new google.maps.LatLngBounds(this.center_, this.center_);\n var markers = this.getMarkers();\n for (var i = 0, marker; marker = markers[i]; i++) {\n bounds.extend(marker.getPosition());\n }\n return bounds;\n }\n\n\n /**\n * Removes the cluster\n */\n remove() {\n this.clusterIcon_.remove();\n this.markers_.length = 0;\n delete this.markers_;\n }\n\n\n /**\n * Returns the number of markers in the cluster.\n *\n * @return {number} The number of markers in the cluster.\n */\n getSize() {\n return this.markers_.length;\n }\n\n\n /**\n * Returns a list of the markers in the cluster.\n *\n * @return {Array.} The markers in the cluster.\n */\n getMarkers() {\n return this.markers_;\n }\n\n\n /**\n * Returns the center of the cluster.\n *\n * @return {google.maps.LatLng} The cluster center.\n */\n getCenter() {\n return this.center_;\n }\n\n\n /**\n * Calculated the extended bounds of the cluster with the grid.\n *\n * @private\n */\n calculateBounds_() {\n var bounds = new google.maps.LatLngBounds(this.center_, this.center_);\n this.bounds_ = this.markerClusterer_.getExtendedBounds(bounds);\n }\n\n\n /**\n * Determines if a marker lies in the clusters bounds.\n *\n * @param {google.maps.Marker} marker The marker to check.\n * @return {boolean} True if the marker lies in the bounds.\n */\n isMarkerInClusterBounds(marker) {\n return this.bounds_.contains(marker.getPosition());\n }\n\n\n /**\n * Returns the map that the cluster is associated with.\n *\n * @return {google.maps.Map} The map.\n */\n getMap() {\n return this.map_;\n }\n\n\n /**\n * Updates the cluster icon\n */\n updateIcon() {\n var zoom = this.map_.getZoom();\n var mz = this.markerClusterer_.getMaxZoom();\n\n if (mz && zoom > mz) {\n // The zoom is greater than our max zoom so show all the markers in cluster.\n for (var i = 0, marker; marker = this.markers_[i]; i++) {\n marker.setMap(this.map_);\n }\n return;\n }\n\n if (this.markers_.length < this.minClusterSize_) {\n // Min cluster size not yet reached.\n this.clusterIcon_.hide();\n return;\n }\n\n var numStyles = this.markerClusterer_.getStyles().length;\n var sums = this.markerClusterer_.getCalculator()(this.markers_, numStyles);\n this.clusterIcon_.setCenter(this.center_);\n this.clusterIcon_.setSums(sums);\n this.clusterIcon_.show();\n }\n}\n\n/**\n * A cluster icon\n *\n * @param {Cluster} cluster The cluster to be associated with.\n * @param {Object} styles An object that has style properties:\n * 'url': (string) The image url.\n * 'height': (number) The image height.\n * 'width': (number) The image width.\n * 'anchor': (Array) The anchor position of the label text.\n * 'textColor': (string) The text color.\n * 'textSize': (number) The text size.\n * 'backgroundPosition: (string) The background postition x, y.\n * @param {number=} opt_padding Optional padding to apply to the cluster icon.\n * @constructor\n * @extends google.maps.OverlayView\n * @ignore\n */\nclass ClusterIcon {\n constructor(cluster, styles, opt_padding) {\n cluster.getMarkerClusterer().extend(ClusterIcon, google.maps.OverlayView);\n\n this.styles_ = styles;\n this.padding_ = opt_padding || 0;\n this.cluster_ = cluster;\n this.center_ = null;\n this.map_ = cluster.getMap();\n this.div_ = null;\n this.sums_ = null;\n this.visible_ = false;\n\n this.setMap(this.map_);\n }\n\n\n /**\n * Triggers the clusterclick event and zoom's if the option is set.\n */\n triggerClusterClick() {\n var clusterBounds = this.cluster_.getBounds();\n var markerClusterer = this.cluster_.getMarkerClusterer();\n\n // Trigger the clusterclick event.\n google.maps.event.trigger(markerClusterer.map_, 'clusterclick', this.cluster_);\n\n if (markerClusterer.isZoomOnClick()) {\n // Zoom into the cluster.\n this.map_.fitBounds(clusterBounds);\n this.map_.setCenter(clusterBounds.getCenter());\n }\n };\n\n\n /**\n * Adding the cluster icon to the dom.\n * @ignore\n */\n onAdd() {\n this.div_ = document.createElement('DIV');\n if (this.visible_) {\n var pos = this.getPosFromLatLng_(this.center_);\n this.div_.style.cssText = this.createCss(pos);\n this.div_.innerHTML = this.sums_.text;\n }\n\n var panes = this.getPanes();\n panes.overlayMouseTarget.appendChild(this.div_);\n\n var that = this;\n google.maps.event.addDomListener(this.div_, 'click', function () {\n that.triggerClusterClick();\n });\n };\n\n\n /**\n * Returns the position to place the div dending on the latlng.\n *\n * @param {google.maps.LatLng} latlng The position in latlng.\n * @return {google.maps.Point} The position in pixels.\n * @private\n */\n getPosFromLatLng_(latlng) {\n var pos = this.getProjection().fromLatLngToDivPixel(latlng);\n pos.x -= parseInt(this.width_ / 2, 10);\n pos.y -= parseInt(this.height_ / 2, 10);\n return pos;\n };\n\n\n /**\n * Draw the icon.\n * @ignore\n */\n draw() {\n if (this.visible_) {\n var pos = this.getPosFromLatLng_(this.center_);\n this.div_.style.top = pos.y + 'px';\n this.div_.style.left = pos.x + 'px';\n this.div_.style.zIndex = google.maps.Marker.MAX_ZINDEX + 1;\n }\n };\n\n\n /**\n * Hide the icon.\n */\n hide() {\n if (this.div_) {\n this.div_.style.display = 'none';\n }\n this.visible_ = false;\n };\n\n\n /**\n * Position and show the icon.\n */\n show() {\n if (this.div_) {\n var pos = this.getPosFromLatLng_(this.center_);\n this.div_.style.cssText = this.createCss(pos);\n this.div_.style.display = '';\n }\n this.visible_ = true;\n };\n\n\n /**\n * Remove the icon from the map\n */\n remove() {\n this.setMap(null);\n };\n\n\n /**\n * Implementation of the onRemove interface.\n * @ignore\n */\n onRemove() {\n if (this.div_ && this.div_.parentNode) {\n this.hide();\n this.div_.parentNode.removeChild(this.div_);\n this.div_ = null;\n }\n };\n\n\n /**\n * Set the sums of the icon.\n *\n * @param {Object} sums The sums containing:\n * 'text': (string) The text to display in the icon.\n * 'index': (number) The style index of the icon.\n */\n setSums(sums) {\n this.sums_ = sums;\n this.text_ = sums.text;\n this.index_ = sums.index;\n if (this.div_) {\n this.div_.innerHTML = sums.text;\n }\n\n this.useStyle();\n };\n\n\n /**\n * Sets the icon to the the styles.\n */\n useStyle() {\n var index = Math.max(0, this.sums_.index - 1);\n index = Math.min(this.styles_.length - 1, index);\n var style = this.styles_[index];\n this.url_ = style['url'];\n this.height_ = style['height'];\n this.width_ = style['width'];\n this.textColor_ = style['textColor'];\n this.anchor_ = style['anchor'];\n this.textSize_ = style['textSize'];\n this.backgroundPosition_ = style['backgroundPosition'];\n };\n\n\n /**\n * Sets the center of the icon.\n *\n * @param {google.maps.LatLng} center The latlng to set as the center.\n */\n setCenter(center) {\n this.center_ = center;\n };\n\n\n /**\n * Create the css text based on the position of the icon.\n *\n * @param {google.maps.Point} pos The position.\n * @return {string} The css style text.\n */\n createCss(pos) {\n var style = [];\n style.push('background-image:url(' + this.url_ + ');');\n var backgroundPosition = this.backgroundPosition_ ? this.backgroundPosition_ : '0 0';\n style.push('background-position:' + backgroundPosition + ';');\n\n if (typeof this.anchor_ === 'object') {\n if (typeof this.anchor_[0] === 'number' && this.anchor_[0] > 0 &&\n this.anchor_[0] < this.height_) {\n style.push('height:' + (this.height_ - this.anchor_[0]) +\n 'px; padding-top:' + this.anchor_[0] + 'px;');\n } else {\n style.push('height:' + this.height_ + 'px; line-height:' + this.height_ +\n 'px;');\n }\n if (typeof this.anchor_[1] === 'number' && this.anchor_[1] > 0 &&\n this.anchor_[1] < this.width_) {\n style.push('width:' + (this.width_ - this.anchor_[1]) +\n 'px; padding-left:' + this.anchor_[1] + 'px;');\n } else {\n style.push('width:' + this.width_ + 'px; text-align:center;');\n }\n } else {\n style.push('height:' + this.height_ + 'px; line-height:' +\n this.height_ + 'px; width:' + this.width_ + 'px; text-align:center;');\n }\n\n var txtColor = this.textColor_ ? this.textColor_ : 'black';\n var txtSize = this.textSize_ ? this.textSize_ : 11;\n\n style.push('cursor:pointer; top:' + pos.y + 'px; left:' +\n pos.x + 'px; color:' + txtColor + '; position:absolute; font-size:' +\n txtSize + 'px; font-family:Arial,sans-serif; font-weight:bold');\n return style.join('');\n }\n}\n\nexport default MarkerClusterer;\n"],"sourceRoot":""}