UNPKG

angular2-google-maps

Version:

Angular 2 components for Google Maps

121 lines 4.99 kB
"use strict"; var core_1 = require('@angular/core'); var Observable_1 = require('rxjs/Observable'); var maps_api_loader_1 = require('./maps-api-loader/maps-api-loader'); /** * Wrapper class that handles the communication with the Google Maps Javascript * API v3 */ var GoogleMapsAPIWrapper = (function () { function GoogleMapsAPIWrapper(_loader, _zone) { var _this = this; this._loader = _loader; this._zone = _zone; this._map = new Promise(function (resolve) { _this._mapResolver = resolve; }); } GoogleMapsAPIWrapper.prototype.createMap = function (el, mapOptions) { var _this = this; return this._loader.load().then(function () { var map = new google.maps.Map(el, mapOptions); _this._mapResolver(map); return; }); }; GoogleMapsAPIWrapper.prototype.setMapOptions = function (options) { this._map.then(function (m) { m.setOptions(options); }); }; /** * Creates a google map marker with the map context */ GoogleMapsAPIWrapper.prototype.createMarker = function (options) { if (options === void 0) { options = {}; } return this._map.then(function (map) { options.map = map; return new google.maps.Marker(options); }); }; GoogleMapsAPIWrapper.prototype.createInfoWindow = function (options) { return this._map.then(function () { return new google.maps.InfoWindow(options); }); }; /** * Creates a google.map.Circle for the current map. */ GoogleMapsAPIWrapper.prototype.createCircle = function (options) { return this._map.then(function (map) { options.map = map; return new google.maps.Circle(options); }); }; GoogleMapsAPIWrapper.prototype.createPolyline = function (options) { return this.getNativeMap().then(function (map) { var line = new google.maps.Polyline(options); line.setMap(map); return line; }); }; GoogleMapsAPIWrapper.prototype.createPolygon = function (options) { return this.getNativeMap().then(function (map) { var polygon = new google.maps.Polygon(options); polygon.setMap(map); return polygon; }); }; /** * Determines if given coordinates are insite a Polygon path. */ GoogleMapsAPIWrapper.prototype.containsLocation = function (latLng, polygon) { return google.maps.geometry.poly.containsLocation(latLng, polygon); }; GoogleMapsAPIWrapper.prototype.subscribeToMapEvent = function (eventName) { var _this = this; return Observable_1.Observable.create(function (observer) { _this._map.then(function (m) { m.addListener(eventName, function (arg) { _this._zone.run(function () { return observer.next(arg); }); }); }); }); }; GoogleMapsAPIWrapper.prototype.setCenter = function (latLng) { return this._map.then(function (map) { return map.setCenter(latLng); }); }; GoogleMapsAPIWrapper.prototype.getZoom = function () { return this._map.then(function (map) { return map.getZoom(); }); }; GoogleMapsAPIWrapper.prototype.getBounds = function () { return this._map.then(function (map) { return map.getBounds(); }); }; GoogleMapsAPIWrapper.prototype.setZoom = function (zoom) { return this._map.then(function (map) { return map.setZoom(zoom); }); }; GoogleMapsAPIWrapper.prototype.getCenter = function () { return this._map.then(function (map) { return map.getCenter(); }); }; GoogleMapsAPIWrapper.prototype.panTo = function (latLng) { return this._map.then(function (map) { return map.panTo(latLng); }); }; GoogleMapsAPIWrapper.prototype.fitBounds = function (latLng) { return this._map.then(function (map) { return map.fitBounds(latLng); }); }; GoogleMapsAPIWrapper.prototype.panToBounds = function (latLng) { return this._map.then(function (map) { return map.panToBounds(latLng); }); }; /** * Returns the native Google Maps Map instance. Be careful when using this instance directly. */ GoogleMapsAPIWrapper.prototype.getNativeMap = function () { return this._map; }; /** * Triggers the given event name on the map instance. */ GoogleMapsAPIWrapper.prototype.triggerMapEvent = function (eventName) { return this._map.then(function (m) { return google.maps.event.trigger(m, eventName); }); }; GoogleMapsAPIWrapper.decorators = [ { type: core_1.Injectable }, ]; /** @nocollapse */ GoogleMapsAPIWrapper.ctorParameters = function () { return [ { type: maps_api_loader_1.MapsAPILoader, }, { type: core_1.NgZone, }, ]; }; return GoogleMapsAPIWrapper; }()); exports.GoogleMapsAPIWrapper = GoogleMapsAPIWrapper; //# sourceMappingURL=google-maps-api-wrapper.js.map