angular2-google-maps
Version:
Angular 2 components for Google Maps
121 lines • 4.99 kB
JavaScript
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
;