UNPKG

ngmap

Version:
62 lines (48 loc) 1.48 kB
/** * @ngdoc service * @name GoogleMapsApi * @description * Load Google Maps API Service */ (function() { 'use strict'; var $q; var $timeout; var GoogleMapsApi = function(_$q_, _$timeout_) { $q = _$q_; $timeout = _$timeout_; return { /** * Load google maps into document by creating a script tag * @memberof GoogleMapsApi * @param {string} mapsUrl * @example * GoogleMapsApi.load(myUrl).then(function() { * console.log('google map has been loaded') * }); */ load: function (mapsUrl) { var deferred = $q.defer(); if (window.google === undefined || window.google.maps === undefined) { window.lazyLoadCallback = function() { $timeout(function() { /* give some time to load */ deferred.resolve(window.google) }, 100); }; var scriptEl = document.createElement('script'); scriptEl.src = mapsUrl + (mapsUrl.indexOf('?') > -1 ? '&' : '?') + 'callback=lazyLoadCallback'; if (!document.querySelector('script[src="' + scriptEl.src + '"]')) { document.body.appendChild(scriptEl); } } else { deferred.resolve(window.google) } return deferred.promise; } } } GoogleMapsApi.$inject = ['$q', '$timeout']; angular.module('ngMap').service('GoogleMapsApi', GoogleMapsApi); })();