TipWidgetOL.js
Summary
No overview generated for 'TipWidgetOL.js'
mapbuilder.loadScript(baseDir+"/widget/TipWidgetBase.js");
mapbuilder.loadScript(baseDir+"/util/openlayers/OpenLayers.js");
function TipWidgetOL(widgetNode, model) {
TipWidgetBase.apply(this, new Array(widgetNode, model));
this.onClick = function(objRef) {
var evt = objRef.model.getParam("olFeatureSelect");
var popup = objRef.createPopup(objRef, evt, false);
evt.feature.layer.mbClickPopup = popup;
}
this.onMouseover = function(objRef) {
var evt = objRef.model.getParam("olFeatureHover");
if (!evt.feature.layer.mbClickPopup || !evt.feature.layer.mbClickPopup.visible()) {
var popup = objRef.createPopup(objRef, evt, true);
evt.feature.layer.mbHoverPopup = popup;
popup.events.register('mouseover', popup, popup.hide);
}
}
this.onMouseout = function(objRef) {
var feature = objRef.model.getParam("olFeatureOut");
if (feature.layer.mbHoverPopup) {
feature.layer.mbHoverPopup.destroy();
feature.layer.mbHoverPopup = null;
}
}
this.createPopup = function(objRef, evt, hover) {
var feature = evt.feature;
var sourceNode = objRef.model.doc.selectSingleNode("//*[@fid='"+feature.fid+"']");
var sourceModel = null;
if (sourceNode) {
sourceModel = sourceNode.getAttribute('sourceModel');
}
var widgetConfig = null;
if (sourceModel && config.objects[sourceModel].config && config.objects[sourceModel].config[objRef.id]) {
widgetConfig = config.objects[sourceModel].config[objRef.id];
} else {
widgetConfig = objRef.config;
}
widgetConfig.stylesheet.setParameter('fid', feature.fid);
var lonlat = feature.layer.map.getLonLatFromPixel(evt.xy);
var popup = new OpenLayers.Popup.Anchored();
popup.padding = 0;
popup.initialize(null, lonlat, new OpenLayers.Size(widgetConfig.width, widgetConfig.height),
new XMLSerializer().serializeToString(widgetConfig.stylesheet.transformNodeToObject(widgetConfig.model.doc)).replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&"),
null, hover == false);
popup.setOpacity(widgetConfig.opacity);
popup.setBackgroundColor(widgetConfig.backgroundColor);
popup.setBorder(widgetConfig.border);
var quadrant = feature.layer.map.getExtent().determineQuadrant(lonlat);
var lonOffset = quadrant.charAt(1) == 'r' ? -5 : 5;
var latOffset = quadrant.charAt(0) == 't' ? 5 : -5;
popup.anchor = { size: new OpenLayers.Size(0,0), offset: new OpenLayers.Pixel(lonOffset, latOffset)};
feature.layer.map.addPopup(popup, true);
return popup;
}
}
Documentation generated by
JSDoc on Tue Aug 21 08:12:28 2007