/**
* Add a popup to the map
* @public
* @param {bemap.Popup} popup
* @param {object} options
* @return {bemap.LeafletMap} this
*/
bemap.LeafletMap.prototype.addPopup = function(popup, options) {
if (popup !== null && bemap.inheritsof(popup, bemap.Popup)) {
popup.native = L.popup({
autoPan: true
});
if (popup.map === null) {
popup.map = this;
}
popup.native.setLatLng(popup.getCoordinate().getLatLonArray());
popup.native.setContent(popup.getInformation());
if (!this.native.popups) {
this.native.popups = [];
}
this.native.popups.push(popup.native);
popup.native.addTo(this.native);
}
return this;
};
/**
* Remove a popup from the map.
* @public
* @param {bemap.Popup} popup the popup to remove from the map.
* @return {bemap.LeafletMap} this;
*/
bemap.LeafletMap.prototype.removePopup = function(popup) {
if (popup !== null && bemap.inheritsof(popup, bemap.Popup)) {
this.native.removeLayer(popup.native);
popup.map = null;
}
return this;
};
/**
* Remove all the popups from the map.
* @return {bemap.LeafletMap} this;
*/
bemap.LeafletMap.prototype.clearPopup = function() {
var that = this.native;
if (this.native.popups && this.native.popups.length !== 0) {
this.native.popups.forEach(function(popup, index, object) {
that.removeLayer(popup);
object.splice(index, 1);
});
return that;
}
//alternative way to close all popups
/*if ($(".leaflet-popup-close-button")[0]) {
$(".leaflet-popup-close-button")[0].click();
}*/
};
/**
* Set the coordinate of the popup.
* @param {bemap.Popup} popup the popup of wich to set the coordinate.
* @param {bemap.Coordinate} coordinate the new coordinate.
* @param {object} options Options.
* @param {bemap.Layer} options.panningMap enable the map panning animation. move map from the current position to the popup anchor at the center of map.
* @return {bemap.OlMap} this.
*/
bemap.LeafletMap.prototype.setCoordinatePopup = function(popup, coordinate, options) {
if (popup !== null && bemap.inheritsof(popup, bemap.Popup)) {
popup.coordinate = coordinate;
if (popup.native !== null) {
popup.native.setLatLng(popup.getCoordinate().getLatLonArray());
}
}
return this;
};