UNPKG

ngx-amap

Version:

[![npm](https://img.shields.io/npm/v/ngx-amap.svg)][npm-badge-url] [![npm](https://img.shields.io/npm/dm/ngx-amap.svg)][npm-badge-url] [![Build Status](https://travis-ci.org/xieziyu/ngx-amap.svg?branch=master)][ci-url]

221 lines 16.7 kB
/** * @fileoverview added by tsickle * Generated from: shared/amap-loader.service.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Inject, Injectable } from '@angular/core'; import { LoggerService } from './logger/logger.service'; import { NGX_AMAP_CONFIG } from './ngx-amap-config'; import { ReplaySubject } from 'rxjs'; /** @type {?} */ var TAG = 'AMapLoader'; var AMapLoaderService = /** @class */ (function () { function AMapLoaderService(config, logger) { if (config === void 0) { config = {}; } this.config = config; this.logger = logger; this.defaultProtocol = 'https'; this.defaultVersion = '1.4.15'; this.defaultUIVersion = '1.0.11'; this.config = config || {}; } /** * @return {?} */ AMapLoaderService.prototype.load = /** * @return {?} */ function () { var _this = this; if (this.loading$) { return this.loading$.asObservable(); } this.logger.d(TAG, 'loading AMap API ...'); this.loading$ = new ReplaySubject(); /** @type {?} */ var callbackName = '_NgxAmapAPILoader'; /** @type {?} */ var script = document.createElement('script'); script.type = 'text/javascript'; script.async = true; script.defer = true; script.src = this.getSrcFromConfig(callbackName); script.onerror = (/** * @param {?} err * @return {?} */ function (err) { _this.logger.e('failed to load AMap API.'); _this.loading$.error(err); }); window[callbackName] = (/** * @return {?} */ function () { _this.logger.d(TAG, 'loading AMap API COMPLETE'); _this.loading$.next(); _this.loading$.complete(); }); document.body.appendChild(script); return this.loading$.asObservable(); }; /** * @return {?} */ AMapLoaderService.prototype.loadUI = /** * @return {?} */ function () { var _this = this; if (this.uiLoading$) { return this.uiLoading$.asObservable(); } this.logger.d(TAG, 'loading AMap UI ...'); this.uiLoading$ = new ReplaySubject(); /** @type {?} */ var uiScript = document.createElement('script'); uiScript.type = 'text/javascript'; uiScript.async = true; uiScript.defer = true; uiScript.src = this.getUISrcFromConfig(); uiScript.onerror = (/** * @param {?} err * @return {?} */ function (err) { _this.logger.e('failed to load AMap API.'); }); uiScript.onload = (/** * @return {?} */ function () { // tslint:disable-next-line: no-string-literal window['initAMapUI'](); _this.logger.d(TAG, 'loading AMap UI COMPLETE'); _this.uiLoading$.next(); _this.uiLoading$.complete(); }); document.body.appendChild(uiScript); return this.uiLoading$.asObservable(); }; /** * @private * @param {?} callbackName * @return {?} */ AMapLoaderService.prototype.getSrcFromConfig = /** * @private * @param {?} callbackName * @return {?} */ function (callbackName) { /** @type {?} */ var urlBase = (this.config.protocol || this.defaultProtocol) + "://webapi.amap.com/maps"; /** @type {?} */ var queryParams = { v: this.config.apiVersion || this.defaultVersion, callback: callbackName, key: this.config.apiKey, }; /** @type {?} */ var params = Object.keys(queryParams) .filter((/** * @param {?} k * @return {?} */ function (k) { return queryParams[k] != null; })) .filter((/** * @param {?} k * @return {?} */ function (k) { // remove empty arrays return (!Array.isArray(queryParams[k]) || (Array.isArray(queryParams[k]) && queryParams[k].length > 0)); })) .map((/** * @param {?} k * @return {?} */ function (k) { // join arrays as comma seperated strings /** @type {?} */ var i = queryParams[k]; if (Array.isArray(i)) { return { key: k, value: i.join(',') }; } return { key: k, value: queryParams[k] }; })) .map((/** * @param {?} entry * @return {?} */ function (entry) { return entry.key + "=" + entry.value; })) .join('&'); return urlBase + "?" + params; }; /** * @private * @return {?} */ AMapLoaderService.prototype.getUISrcFromConfig = /** * @private * @return {?} */ function () { // tslint:disable-next-line: max-line-length /** @type {?} */ var urlBase = (this.config.protocol || this.defaultProtocol) + "://webapi.amap.com/ui/1.0/main-async.js?v=" + (this.config.uiVersion || this.defaultUIVersion); return urlBase; }; AMapLoaderService.decorators = [ { type: Injectable } ]; /** @nocollapse */ AMapLoaderService.ctorParameters = function () { return [ { type: undefined, decorators: [{ type: Inject, args: [NGX_AMAP_CONFIG,] }] }, { type: LoggerService } ]; }; return AMapLoaderService; }()); export { AMapLoaderService }; if (false) { /** * @type {?} * @private */ AMapLoaderService.prototype.defaultProtocol; /** * @type {?} * @private */ AMapLoaderService.prototype.defaultVersion; /** * @type {?} * @private */ AMapLoaderService.prototype.defaultUIVersion; /** * @type {?} * @private */ AMapLoaderService.prototype.loading$; /** * @type {?} * @private */ AMapLoaderService.prototype.uiLoading$; /** * @type {?} * @private */ AMapLoaderService.prototype.config; /** * @type {?} * @private */ AMapLoaderService.prototype.logger; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1hcC1sb2FkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1hbWFwLyIsInNvdXJjZXMiOlsic2hhcmVkL2FtYXAtbG9hZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFpQixlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRSxPQUFPLEVBQWMsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDOztJQUUzQyxHQUFHLEdBQUcsWUFBWTtBQUV4QjtJQVFFLDJCQUNtQyxNQUEwQixFQUNuRCxNQUFxQjtRQURJLHVCQUFBLEVBQUEsV0FBMEI7UUFBMUIsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFDbkQsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQVJ2QixvQkFBZSxHQUFHLE9BQU8sQ0FBQztRQUMxQixtQkFBYyxHQUFHLFFBQVEsQ0FBQztRQUMxQixxQkFBZ0IsR0FBRyxRQUFRLENBQUM7UUFRbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLElBQUksRUFBRSxDQUFDO0lBQzdCLENBQUM7Ozs7SUFFRCxnQ0FBSTs7O0lBQUo7UUFBQSxpQkF1QkM7UUF0QkMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNyQztRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQzs7WUFDOUIsWUFBWSxHQUFHLG1CQUFtQjs7WUFDbEMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDO1FBQy9DLE1B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Q0FBQyxlQUFlLG9EQUE2QyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVM7WUFDdEYsSUFBSSxDQUFDLGdCQUFnQixDQUFFO1FBQ3pCLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7O2dCQXJHRixVQUFVOzs7O2dEQVNOLE1BQU0sU0FBQyxlQUFlO2dCQWZsQixhQUFhOztJQTRHdEIsd0JBQUM7Q0FBQSxBQXRHRCxJQXNHQztTQXJHWSxpQkFBaUI7Ozs7OztJQUM1Qiw0Q0FBa0M7Ozs7O0lBQ2xDLDJDQUFrQzs7Ozs7SUFDbEMsNkNBQW9DOzs7OztJQUNwQyxxQ0FBc0M7Ozs7O0lBQ3RDLHVDQUF3Qzs7Ozs7SUFHdEMsbUNBQTJEOzs7OztJQUMzRCxtQ0FBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tICcuL2xvZ2dlci9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBOZ3hBbWFwQ29uZmlnLCBOR1hfQU1BUF9DT05GSUcgfSBmcm9tICcuL25neC1hbWFwLWNvbmZpZyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmNvbnN0IFRBRyA9ICdBTWFwTG9hZGVyJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFNYXBMb2FkZXJTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBkZWZhdWx0UHJvdG9jb2wgPSAnaHR0cHMnO1xuICBwcml2YXRlIGRlZmF1bHRWZXJzaW9uID0gJzEuNC4xNSc7XG4gIHByaXZhdGUgZGVmYXVsdFVJVmVyc2lvbiA9ICcxLjAuMTEnO1xuICBwcml2YXRlIGxvYWRpbmckOiBSZXBsYXlTdWJqZWN0PHZvaWQ+O1xuICBwcml2YXRlIHVpTG9hZGluZyQ6IFJlcGxheVN1YmplY3Q8dm9pZD47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChOR1hfQU1BUF9DT05GSUcpIHByaXZhdGUgY29uZmlnOiBOZ3hBbWFwQ29uZmlnID0ge30sXG4gICAgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlclNlcnZpY2UsXG4gICkge1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnIHx8IHt9O1xuICB9XG5cbiAgbG9hZCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5sb2FkaW5nJCkge1xuICAgICAgcmV0dXJuIHRoaXMubG9hZGluZyQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIHRoaXMubG9nZ2VyLmQoVEFHLCAnbG9hZGluZyBBTWFwIEFQSSAuLi4nKTtcbiAgICB0aGlzLmxvYWRpbmckID0gbmV3IFJlcGxheVN1YmplY3QoKTtcbiAgICBjb25zdCBjYWxsYmFja05hbWUgPSAnX05neEFtYXBBUElMb2FkZXInO1xuICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgIHNjcmlwdC50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7XG4gICAgc2NyaXB0LmFzeW5jID0gdHJ1ZTtcbiAgICBzY3JpcHQuZGVmZXIgPSB0cnVlO1xuICAgIHNjcmlwdC5zcmMgPSB0aGlzLmdldFNyY0Zyb21Db25maWcoY2FsbGJhY2tOYW1lKTtcbiAgICBzY3JpcHQub25lcnJvciA9IChlcnI6IEV2ZW50KSA9PiB7XG4gICAgICB0aGlzLmxvZ2dlci5lKCdmYWlsZWQgdG8gbG9hZCBBTWFwIEFQSS4nKTtcbiAgICAgIHRoaXMubG9hZGluZyQuZXJyb3IoZXJyKTtcbiAgICB9O1xuICAgIHdpbmRvd1tjYWxsYmFja05hbWVdID0gKCkgPT4ge1xuICAgICAgdGhpcy5sb2dnZXIuZChUQUcsICdsb2FkaW5nIEFNYXAgQVBJIENPTVBMRVRFJyk7XG4gICAgICB0aGlzLmxvYWRpbmckLm5leHQoKTtcbiAgICAgIHRoaXMubG9hZGluZyQuY29tcGxldGUoKTtcbiAgICB9O1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbiAgICByZXR1cm4gdGhpcy5sb2FkaW5nJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGxvYWRVSSgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy51aUxvYWRpbmckKSB7XG4gICAgICByZXR1cm4gdGhpcy51aUxvYWRpbmckLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICB0aGlzLmxvZ2dlci5kKFRBRywgJ2xvYWRpbmcgQU1hcCBVSSAuLi4nKTtcbiAgICB0aGlzLnVpTG9hZGluZyQgPSBuZXcgUmVwbGF5U3ViamVjdCgpO1xuICAgIGNvbnN0IHVpU2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgdWlTY3JpcHQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnO1xuICAgIHVpU2NyaXB0LmFzeW5jID0gdHJ1ZTtcbiAgICB1aVNjcmlwdC5kZWZlciA9IHRydWU7XG4gICAgdWlTY3JpcHQuc3JjID0gdGhpcy5nZXRVSVNyY0Zyb21Db25maWcoKTtcbiAgICB1aVNjcmlwdC5vbmVycm9yID0gKGVycjogRXZlbnQpID0+IHtcbiAgICAgIHRoaXMubG9nZ2VyLmUoJ2ZhaWxlZCB0byBsb2FkIEFNYXAgQVBJLicpO1xuICAgIH07XG4gICAgdWlTY3JpcHQub25sb2FkID0gKCkgPT4ge1xuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1zdHJpbmctbGl0ZXJhbFxuICAgICAgd2luZG93Wydpbml0QU1hcFVJJ10oKTtcbiAgICAgIHRoaXMubG9nZ2VyLmQoVEFHLCAnbG9hZGluZyBBTWFwIFVJIENPTVBMRVRFJyk7XG4gICAgICB0aGlzLnVpTG9hZGluZyQubmV4dCgpO1xuICAgICAgdGhpcy51aUxvYWRpbmckLmNvbXBsZXRlKCk7XG4gICAgfTtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHVpU2NyaXB0KTtcbiAgICByZXR1cm4gdGhpcy51aUxvYWRpbmckLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTcmNGcm9tQ29uZmlnKGNhbGxiYWNrTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgdXJsQmFzZSA9IGAke3RoaXMuY29uZmlnLnByb3RvY29sIHx8IHRoaXMuZGVmYXVsdFByb3RvY29sfTovL3dlYmFwaS5hbWFwLmNvbS9tYXBzYDtcbiAgICBjb25zdCBxdWVyeVBhcmFtczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBBcnJheTxzdHJpbmc+IH0gPSB7XG4gICAgICB2OiB0aGlzLmNvbmZpZy5hcGlWZXJzaW9uIHx8IHRoaXMuZGVmYXVsdFZlcnNpb24sXG4gICAgICBjYWxsYmFjazogY2FsbGJhY2tOYW1lLFxuICAgICAga2V5OiB0aGlzLmNvbmZpZy5hcGlLZXksXG4gICAgfTtcbiAgICBjb25zdCBwYXJhbXMgPSBPYmplY3Qua2V5cyhxdWVyeVBhcmFtcylcbiAgICAgIC5maWx0ZXIoKGs6IHN0cmluZykgPT4gcXVlcnlQYXJhbXNba10gIT0gbnVsbClcbiAgICAgIC5maWx0ZXIoKGs6IHN0cmluZykgPT4ge1xuICAgICAgICAvLyByZW1vdmUgZW1wdHkgYXJyYXlzXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgIUFycmF5LmlzQXJyYXkocXVlcnlQYXJhbXNba10pIHx8XG4gICAgICAgICAgKEFycmF5LmlzQXJyYXkocXVlcnlQYXJhbXNba10pICYmIHF1ZXJ5UGFyYW1zW2tdLmxlbmd0aCA+IDApXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICAgLm1hcCgoazogc3RyaW5nKSA9PiB7XG4gICAgICAgIC8vIGpvaW4gYXJyYXlzIGFzIGNvbW1hIHNlcGVyYXRlZCBzdHJpbmdzXG4gICAgICAgIGNvbnN0IGkgPSBxdWVyeVBhcmFtc1trXTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaSkpIHtcbiAgICAgICAgICByZXR1cm4geyBrZXk6IGssIHZhbHVlOiBpLmpvaW4oJywnKSB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGtleTogaywgdmFsdWU6IHF1ZXJ5UGFyYW1zW2tdIH07XG4gICAgICB9KVxuICAgICAgLm1hcCgoZW50cnk6IHsga2V5OiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfSkgPT4gYCR7ZW50cnkua2V5fT0ke2VudHJ5LnZhbHVlfWApXG4gICAgICAuam9pbignJicpO1xuXG4gICAgcmV0dXJuIGAke3VybEJhc2V9PyR7cGFyYW1zfWA7XG4gIH1cblxuICBwcml2YXRlIGdldFVJU3JjRnJvbUNvbmZpZygpIHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxuICAgIGNvbnN0IHVybEJhc2UgPSBgJHt0aGlzLmNvbmZpZy5wcm90b2NvbCB8fFxuICAgICAgdGhpcy5kZWZhdWx0UHJvdG9jb2x9Oi8vd2ViYXBpLmFtYXAuY29tL3VpLzEuMC9tYWluLWFzeW5jLmpzP3Y9JHt0aGlzLmNvbmZpZy51aVZlcnNpb24gfHxcbiAgICAgIHRoaXMuZGVmYXVsdFVJVmVyc2lvbn1gO1xuICAgIHJldHVybiB1cmxCYXNlO1xuICB9XG59XG4iXX0=