/**
PWS library - Interactive map
@class
*/
$pws.intmap=
{
m_initerr: "",
m_lasterr: "",
/**
Get component version
@return
string containing version/revision information
*/
version: function()
{
return "$Revision: 6477 $";
},
/**
Initialize component
@param data
initialization data:
@return
true for success, false for error (error string is available using initErr() function in that case)
*/
init: function(data)
{
if (!$pws.isModuleInitialized("utils"))
{
this.m_initerr="$pws.gmap depends on $pws.utils";
return false;
}
return true;
},
/**
Get initialization error
@return
string with init error message
*/
initErr: function()
{
return this.m_initerr;
},
/**
Get last error
@return
string with last error message
*/
getLastErr: function()
{
return this.m_lasterr;
},
/**
Create & connect map object
@param data
map data:
mapcont - map container object (div to be occupied by map layers)
prefix - map objects prefix
zoom - initial zoom (optional, default is 1.0)
zoom_min - min. zoom factor
zoom_max - max. zoom factor
zoom_step - zoom factor step
zoom_x - zoom offset x (precentage)
zoom_y - zoom offset y (precentage)
@return
map object
*/
create: function(data)
{
$mapobj=$();
if (!data)
{
this.m_lasterr="No data specified";
return null;
}
if (!data.mapcont)
{
this.m_lasterr="No mapcont object specified";
return null;
}
if (!data.prefix)
{
data.prefix="intmap";
}
if (!data.zoom)
{
data.zoom=1.0;
}
if (data.zoom_x==null)
{
data.zoom_x=0.5;
}
if (data.zoom_y==null)
{
data.zoom_y=0.5;
}
if (data.zoom_min==null)
{
data.zoom_min=1.0;
}
if (data.zoom_max==null)
{
data.zoom_max=2.0;
}
if (data.zoom_step==null)
{
data.zoom_step=0.05;
}
if (data.params!=null) $mapobj.params=data.params;
$mapobj.mapcont=data.mapcont;
$mapobj.prefix=data.prefix;
$mapobj.zoom=data.zoom;
$mapobj.zoom_x=data.zoom_x;
$mapobj.zoom_y=data.zoom_y;
$mapobj.zoom_min=data.zoom_min;
$mapobj.zoom_max=data.zoom_max;
$mapobj.zoom_step=data.zoom_step;
$mapobj.w=$mapobj.mapcont.width();
$mapobj.h=$mapobj.mapcont.height();
if (data.map_w!=null) $mapobj.w=data.map_w;
if (data.map_h!=null) $mapobj.h=data.map_h;
$mapobj.layers=new Array();
var mapobj_class_top=data.toplayerclass;
var mapobj_class_bg=data.bglayerclass;
var mapobj_class_dh=data.downhilllayerclass;
var mapobj_class_lifts=data.liftslayerclass;
var $toplayer=$("
");
var $bglayer=$("
");
var $dhlayer=$("");
var $dhlayer_idspots=$("");
var $lilayer=$("");
$mapobj.layers["toplayer"]=$toplayer;
$mapobj.layers["bglayer"]=$bglayer;
$mapobj.layers["dh_base"]=$dhlayer;
$mapobj.layers["lifts"]=$lilayer;
$mapobj.layers["dh_idspots"]=$dhlayer_idspots;
$mapobj.mapcont.append($toplayer);
$mapobj.layers["toplayer"].append($bglayer);
$mapobj.layers["toplayer"].append($dhlayer);
$mapobj.layers["toplayer"].append($lilayer);
$mapobj.layers["toplayer"].append($dhlayer_idspots);
/*
if (data.bgimg!=null)
{
$ret.layers["bgimg"]=$("");
var $bgimg=$("");
$ret.layers["bgimg"].append($bgimg);
}
*/
//$ret.mapcont.append($ret.layers["bgimg"]);
$pws.intmap.setZoom($mapobj,$mapobj.zoom,$mapobj.zoom_x,$mapobj.zoom_y);
if ($mapobj.w!=null&&$mapobj.h!=null)
{
$pws.intmap.resize($mapobj,$mapobj.w,$mapobj.h);
}
return $mapobj;
},
/**
Destroy map object
@param $mapobj
map object
*/
destroy: function($mapobj)
{
},
/**
Add map layer
@param $mapobj
map object
@param layerid
layer id - "bgimg","downhill",... or "*" for an array containing multiple layers
@param layerdata
layer data
@return
nonzero for success
*/
addLayer: function($mapobj,layerid,layerdata)
{
if (layerid=="*")
{
layertype=new Array();
$.each(layerdata,function(key,val)
{
layertype.push(key);
});
}
else
{
layertype={0:layerid};
}
$.each(layertype,function(key,val)
{
switch (val)
{
case "svg":
{
$mapobj.svg_w=null;
$mapobj.svg_h=null;
$mapobj.vbox=null;
$mapobj.vbox_x=null;
$mapobj.vbox_y=null;
$mapobj.vbox_w=null;
$mapobj.vbox_h=null;
if (layerdata[val]["width"]!=null) $mapobj.svg_w=layerdata[val]["width"];
if (layerdata[val]["height"]!=null) $mapobj.svg_h=layerdata[val]["height"];
if (layerdata[val]["viewbox"]!=null)
{
$mapobj.vbox=layerdata[val]["viewbox"];
var sa=$mapobj.vbox.split(" ");
if (sa.length==4)
{
$mapobj.vbox_x=sa[0];
$mapobj.vbox_y=sa[1];
$mapobj.vbox_w=sa[2];
$mapobj.vbox_h=sa[3];
}
}
break;
}
case "bgimg":
{
$pws.intmap.addLayer_BgImg($mapobj,layerdata[val]);
break;
}
case "downhill":
{
$pws.intmap.addLayer_Downhill($mapobj,layerdata[val]);
break;
}
case "lifts":
{
$pws.intmap.addLayer_Lifts($mapobj,layerdata[val]);
break;
}
default:
{
this.m_lasterr="Invalid/unsupported layerid '"+val+"'";
return 0;
}
}
});
return 1;
},
/**
Add bgimg layer
@param $mapobj
map object
@param layerdata
layer data
*/
addLayer_BgImg: function($mapobj,layerdata)
{
if (layerdata.url!=null)
{
var mapw=$mapobj.mapcont.width();
var maph=$mapobj.mapcont.height();
//var $bgimg=$("");
var $bgimg=$("");
$mapobj.layers["bglayer"].append($bgimg);
}
},
/**
Add downhill layer
@param $mapobj
map object
@param layerdata
layer data
*/
addLayer_Downhill: function($mapobj,layerdata)
{
if (layerdata!=null)
{
var mapw=$mapobj.mapcont.width();
var maph=$mapobj.mapcont.height();
var svgstr="