UNPKG

ng2-heremaps

Version:
294 lines 9.95 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import { Injectable } from '@angular/core'; import { LazyMapsApiLoader } from '../loaders/lazy-maps-api-loader'; var /** @type {?} */ DefaultCoords = { latitude: 40.73061, longitude: -73.935242 }; /** * @return {?} */ function noop() { // noop } /** * Service responsible to execute arbitrary functions in specific google map context */ var HereMapsManager = /** @class */ (function () { function HereMapsManager(loader) { this.loader = loader; this._maps = new Map(); // check browser location this.getBrowserLocation().then(noop); // preload map immediately this._loadPromise = this.loader.load(); } /** * @return {?} */ HereMapsManager.prototype.onApiLoad = /** * @return {?} */ function () { return this.loader.platformReady; }; /** * @param {?} options * @return {?} */ HereMapsManager.prototype.createMarker = /** * @param {?} options * @return {?} */ function (options) { return this.loader.platformReady.then(function () { return new H.map.Marker(/** @type {?} */ (options.position)); }); }; /** * @param {?} options * @return {?} */ HereMapsManager.prototype.createBubble = /** * @param {?} options * @return {?} */ function (options) { return this.loader.platformReady.then(function () { return new H.ui.InfoBubble(/** @type {?} */ (options.position)); }); }; /** * @param {?} origin * @param {?} destination * @param {?=} intermediatePoints * @return {?} */ HereMapsManager.prototype.getDirections = /** * @param {?} origin * @param {?} destination * @param {?=} intermediatePoints * @return {?} */ function (origin, destination, intermediatePoints) { var _this = this; if (intermediatePoints === void 0) { intermediatePoints = []; } return this.loader.platformReady.then(function (platform) { var /** @type {?} */ router = platform.getRoutingService(); return new Promise(function (resolve, reject) { var /** @type {?} */ params = { mode: 'balanced;truck', representation: 'navigation' }; var /** @type {?} */ waypoints = [origin].concat(intermediatePoints, [destination]); waypoints.forEach(function (waypoint, index) { return (params["waypoint" + index] = _this.generateWaypointParam(waypoint, index === 0 || index === waypoints.length - 1)); }); router.calculateRoute(params, function (result) { return resolve(result); }, function (error) { console.error({ message: 'fail to get directions', error: error }); reject(error); }); }); }); }; /** * @param {?} el * @param {?=} options * @param {?=} controls * @return {?} */ HereMapsManager.prototype.createMap = /** * @param {?} el * @param {?=} options * @param {?=} controls * @return {?} */ function (el, options, controls) { var _this = this; return this.loader.platformReady.then(function (platform) { var /** @type {?} */ defaultLayers = _this._defaultLayers || platform.createDefaultLayers(); _this._defaultLayers = defaultLayers; var /** @type {?} */ map = new H.Map(el, defaultLayers.normal.map, options); var /** @type {?} */ ui = H.ui.UI.createDefault(map, defaultLayers, 'en-US'); ui.setUnitSystem(H.ui.UnitSystem.IMPERIAL); var /** @type {?} */ mapEvents = new H.mapevents.MapEvents(map); var /** @type {?} */ behavior = new H.mapevents.Behavior(mapEvents); if (controls) { if (!controls.mapTypeControl) { ui.removeControl('mapsettings'); } if (!controls.zoomControl) { ui.removeControl('zoom'); } if (!controls.scaleControl) { ui.removeControl('scalebar'); } if (!controls.streetViewControl && (/** @type {?} */ (H)).PanoramaView) { ui.removeControl('panorama'); } if (!controls.scrollwheel) { behavior.disable(H.mapevents.Behavior.WHEELZOOM); } if (!controls.enableDoubleClickZoom) { behavior.disable(H.mapevents.Behavior.DBLTAPZOOM); } if (!controls.draggable) { behavior.disable(H.mapevents.Behavior.DRAGGING); } } return { map: map, ui: ui, platform: platform }; }); }; /** * @param {?} name * @return {?} */ HereMapsManager.prototype.getMap = /** * @param {?} name * @return {?} */ function (name) { var _this = this; return this._loadPromise.then(function () { return _this._maps.get(name); }); }; /** * @param {?} name * @param {?} map * @return {?} */ HereMapsManager.prototype.addMap = /** * @param {?} name * @param {?} map * @return {?} */ function (name, map) { this._maps.set(name, map); }; /** * @param {?} name * @return {?} */ HereMapsManager.prototype.removeMap = /** * @param {?} name * @return {?} */ function (name) { return this._maps.delete(name); }; /** * @return {?} */ HereMapsManager.prototype.getBrowserLocation = /** * @return {?} */ function () { if (this._browserLocationPromise) { return this._browserLocationPromise; } return (this._browserLocationPromise = new Promise(function (resolve) { if (location.protocol === 'https' && navigator.geolocation) { navigator.geolocation.getCurrentPosition(function (success) { resolve(success.coords); }, function (error) { console.error(error); if (error.code !== 1) { console.warn("Permission is accepted but error encounter with message: " + error.message); } // if user didn't answer return default resolve(DefaultCoords); }); } else { // if browser do not support location API return default (NYC) resolve(DefaultCoords); } })); }; /** * @param {?=} points * @return {?} */ HereMapsManager.prototype.calculateMapBounds = /** * @param {?=} points * @return {?} */ function (points) { if (points === void 0) { points = []; } return this.loader.platformReady.then(function (_) { var /** @type {?} */ bounds = new H.map.Group().getBounds(); if (points && points.length > 1) { points.forEach(function (m) { if (m instanceof H.map.AbstractMarker) { bounds.mergePoint(m.getPosition()); } else { bounds.mergePoint({ lat: (/** @type {?} */ (m)).latitude !== void 0 ? (/** @type {?} */ (m)).latitude : (/** @type {?} */ (m)).lat, lng: (/** @type {?} */ (m)).longitude !== void 0 ? (/** @type {?} */ (m)).longitude : (/** @type {?} */ (m)).lng }); } }); return Promise.resolve(bounds); } return Promise.resolve(bounds); }); }; /** * @param {?} coordinates * @param {?=} end * @return {?} */ HereMapsManager.prototype.generateWaypointParam = /** * @param {?} coordinates * @param {?=} end * @return {?} */ function (coordinates, end) { if (end === void 0) { end = false; } var /** @type {?} */ lat = (/** @type {?} */ (coordinates)).lat || (/** @type {?} */ (coordinates)).latitude || 0; var /** @type {?} */ lng = (/** @type {?} */ (coordinates)).lng || (/** @type {?} */ (coordinates)).longitude || (/** @type {?} */ (coordinates)).lon || 0; return "geo!" + (end ? 'stopOver' : 'passThrough') + "!" + lat + "," + lng; }; HereMapsManager.decorators = [ { type: Injectable } ]; /** @nocollapse */ HereMapsManager.ctorParameters = function () { return [ { type: LazyMapsApiLoader, }, ]; }; return HereMapsManager; }()); export { HereMapsManager }; function HereMapsManager_tsickle_Closure_declarations() { /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */ HereMapsManager.decorators; /** * @nocollapse * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>} */ HereMapsManager.ctorParameters; /** @type {?} */ HereMapsManager.prototype._maps; /** @type {?} */ HereMapsManager.prototype._browserLocationPromise; /** @type {?} */ HereMapsManager.prototype._defaultLayers; /** @type {?} */ HereMapsManager.prototype._loadPromise; /** @type {?} */ HereMapsManager.prototype.loader; } //# sourceMappingURL=maps-manager.js.map