/**
* @namespace WPGMZA
* @module OLInfoWindow
* @requires WPGMZA.InfoWindow
* @pro-requires WPGMZA.ProInfoWindow
*/
(function($) {
var Parent;
WPGMZA.OLInfoWindow = function(mapObject)
{
var self = this;
Parent.call(this, mapObject);
this.element = $("<div class='ol-info-window-container ol-info-window-plain'></div>")[0];
$(this.element).on("click", ".ol-info-window-close", function(event) {
self.close();
});
}
if(WPGMZA.isProVersion())
Parent = WPGMZA.ProInfoWindow;
else
Parent = WPGMZA.InfoWindow;
WPGMZA.OLInfoWindow.prototype = Object.create(Parent.prototype);
WPGMZA.OLInfoWindow.prototype.constructor = WPGMZA.OLInfoWindow;
/**
* Opens the info window
* TODO: This should take a mapObject, not an event
* @return boolean FALSE if the info window should not & will not open, TRUE if it will
*/
WPGMZA.OLInfoWindow.prototype.open = function(map, mapObject)
{
var self = this;
var latLng = mapObject.getPosition();
if(!WPGMZA.InfoWindow.prototype.open.call(this, map, mapObject))
return false;
if(this.overlay)
this.mapObject.map.olMap.removeOverlay(this.overlay);
this.overlay = new ol.Overlay({
element: this.element
});
this.overlay.setPosition(ol.proj.fromLonLat([
latLng.lng,
latLng.lat
]));
self.mapObject.map.olMap.addOverlay(this.overlay);
$(this.element).show();
this.dispatchEvent("infowindowopen");
$(this.element).trigger("infowindowopen.wpgmza");
}
WPGMZA.OLInfoWindow.prototype.close = function(event)
{
// TODO: Why? This shouldn't have to be here. Removing the overlay should hide the element (it doesn't)
$(this.element).hide();
if(!this.overlay)
return;
WPGMZA.InfoWindow.prototype.close.call(this);
this.mapObject.map.olMap.removeOverlay(this.overlay);
this.overlay = null;
}
WPGMZA.OLInfoWindow.prototype.setContent = function(html)
{
$(this.element).html("<i class='fa fa-times ol-info-window-close' aria-hidden='true'></i>" + html);
}
})(jQuery);