📄 layercontrol.js
字号:
///////////////////////////////////////////////////////////////////////////////
//
// (c) Pitney Bowes MapInfo Corporation, 2008. All rights reserved.
//
// The source code below is provided as sample code only. The end user of the
// Licensed Product that contains this code may use the code below for
// development purposes. This software is provided by Pitney Bowes MapInfo
// "as is" and any express or implied warranties, including, but not limited
// to, the implied warranties of merchantability and fitness for a particular
// purpose are disclaimed. In no event shall Pitney Bowes MapInfo be liable
// for any direct, indirect, incidental, special, exemplary, or consequential
// damages (including, but not limited to, procurement of substitute goods or
// services; loss of use, data or profits; or business interruption) however
// caused and whether in contract, strict liability, or tort (including
// negligence) arising in any way out of the use of this software, even if
// advised of the possibility of such damage.
//
///////////////////////////////////////////////////////////////////////////////
// Layers collection belonging to map
function MapInfoWebMapLayers()
{
}
// Layer object
function MapInfoWebMapLayer()
{
this.name="";
this.visible="";
this.visiblerangeenabled="";
this.rangestart="";
this.rangeend="";
this.selectable="";
this.type="";
this.id="";
this.alias="";
}
function MapInfoWebUpdateVisible(lyrCntrlID)
{
if (_curLayer)
{
var visElem;
var selElem;
if (_curLayer.type == "nonselectable")
{
visElem = document.getElementById("chkLblVisible_"+lyrCntrlID);
} else if (_curLayer.type == "featurelayer")
{
visElem = document.getElementById("chkLyrVisible_"+lyrCntrlID);
selElem = document.getElementById("chkLyrSelectable_"+lyrCntrlID);
}
if (visElem.checked == true)
{
_curLayer.visible = "True";
if (selElem)
{
selElem.disabled = false;
}
} else {
_curLayer.visible = "False";
if (selElem)
{
selElem.disabled = true;
}
}
updateLayerArray(lyrCntrlID);
}
}
function MapInfoWebUpdateZoomDisplay(lyrCntrlID)
{
if (_curLayer)
{
var visrangeElem;
var rangestartElem;
var rangeendElem;
if (_curLayer.type == "nonselectable")
{
visrangeElem = document.getElementById("chkLblZmRange_"+lyrCntrlID);
rangestartElem = document.getElementById("lblMinzoom_"+lyrCntrlID);
rangeendElem = document.getElementById("lblMaxzoom_"+lyrCntrlID);
} else if (_curLayer.type == "featurelayer")
{
visrangeElem = document.getElementById("chkLyrZmRange_"+lyrCntrlID);
rangestartElem = document.getElementById("lyrMinzoom_"+lyrCntrlID);
rangeendElem = document.getElementById("lyrMaxzoom_"+lyrCntrlID);
}
if (visrangeElem.checked == true)
{
_curLayer.visiblerangeenabled = "True";
rangestartElem.disabled = false;
rangeendElem.disabled = false;
} else {
_curLayer.visiblerangeenabled = "False";
rangestartElem.disabled = true;
rangeendElem.disabled = true;
}
_curLayer.rangestart = rangestartElem.value;
_curLayer.rangeend = rangeendElem.value;
updateLayerArray(lyrCntrlID);
}
}
function MapInfoWebUpdateSelectable(lyrCntrlID, mapid)
{
if (_curLayer)
{
if (_curLayer.type == "featurelayer")
{
var lyrsArray = eval("_selectlayers_"+mapid);
for ( i=0;i<lyrsArray.Layers.length;i++ )
{
var layer = lyrsArray.Layers[i];
if (_curLayer.name == layer.name)
{
var selElem = document.getElementById("chkLyrSelectable_"+lyrCntrlID);
if (selElem.checked == true)
{
layer.selectable = "True";
} else {
layer.selectable = "False";
}
}
}
}
}
}
function MapInfoWebSelectedNodeChanged(node, name, code, lyrCntrlID, mapid, lyrid)
{
updateNodeStyle(node);
if (_curElemType == "root")
{
var mapzoomElem = document.getElementById("mapzoom_"+lyrCntrlID);
eval("_map_"+lyrCntrlID).zoom = mapzoomElem.value;
MapInfoWebUpdateZoomDisplay(lyrCntrlID);
}
if (code == "nonselectable")
{
if ( setCurrentLayer(lyrid, "nonselectable", lyrCntrlID) )
{
var visElem = document.getElementById("chkLblVisible_"+lyrCntrlID);
var visrangeElem = document.getElementById("chkLblZmRange_"+lyrCntrlID);
var rangestartElem = document.getElementById("lblMinzoom_"+lyrCntrlID);
var rangeendElem = document.getElementById("lblMaxzoom_"+lyrCntrlID);
showPanel("lblsourcepanel", lyrCntrlID);
}
} else if (code == "featurelayer")
{
if ( setCurrentLayer(lyrid, "featurelayer", lyrCntrlID) )
{
var visElem = document.getElementById("chkLyrVisible_"+lyrCntrlID);
var visrangeElem = document.getElementById("chkLyrZmRange_"+lyrCntrlID);
var rangestartElem = document.getElementById("lyrMinzoom_"+lyrCntrlID);
var rangeendElem = document.getElementById("lyrMaxzoom_"+lyrCntrlID);
var selElem = document.getElementById("chkLyrSelectable_"+lyrCntrlID);
var lyrsArray = eval("_selectlayers_"+mapid);
for ( i=0;i<lyrsArray.Layers.length;i++ )
{
var layer = lyrsArray.Layers[i];
if (_curLayer.name == layer.name)
{
if (layer.selectable == "True")
{
selElem.checked = true;
} else {
selElem.checked = false;
}
}
if (_curLayer.visible == "True")
{
selElem.disabled = false;
} else {
selElem.disabled = true;
}
}
showPanel("ftrlayerpanel", lyrCntrlID);
}
}
if (_curLayer.visible == "True")
{
visElem.checked = true;
} else {
visElem.checked = false;
}
if (_curLayer.visiblerangeenabled == "True")
{
visrangeElem.checked = true;
} else {
visrangeElem.checked = false;
}
if ( visrangeElem.checked == true )
{
rangestartElem.disabled = false;
rangeendElem.disabled = false;
} else {
rangestartElem.disabled = true;
rangeendElem.disabled = true;
}
rangestartElem.value = _curLayer.rangestart;
rangeendElem.value = _curLayer.rangeend;
_curElemType = "lyrnode";
}
function setCurrentLayer(id, type, lyrCntrlID)
{
var layer;
var i;
var found=false;
var lyrsArray = eval("_layers_"+lyrCntrlID);
for ( i=0;i<lyrsArray.Layers.length;i++ )
{
layer = lyrsArray.Layers[i];
if ((layer.id == id) )
{
_curLayer = layer;
found = true;
break;
}
}
if (found == true)
{
return true;
} else {
return false;
}
}
function updateLayerArray(lyrCntrlID)
{
var layer;
var i;
var lyrsArray = eval("_layers_"+lyrCntrlID);
for ( i=0;i<lyrsArray.Layers.length;i++ )
{
layer = lyrsArray.Layers[i];
if ( (layer.id == _curLayer.id) )
{
lyrsArray.Layers[i] = _curLayer;
break;
}
}
}
// Apply changes button onclick handler
function MapInfoWebApplyChanges(lyrCntrlID, mapID)
{
var mapzoomElem = document.getElementById("mapzoom_"+lyrCntrlID);
eval("_map_"+lyrCntrlID).zoom = mapzoomElem.value;
MapInfoWebUpdateZoomDisplay(lyrCntrlID);
var lyrsArray = eval("_layers_"+lyrCntrlID);
for ( i=0;i<lyrsArray.Layers.length;i++ )
{
var form=document.forms[0];
var elemID = lyrsArray.Layers[i].id;
var elemValue = MapInfoWebBuildPropertiesString(lyrsArray.Layers[i], lyrCntrlID);
MapInfoWebCreateHiddenField(form, elemID, elemID, elemValue);
}
MapInfoWebCreateSelectableLayerField(mapID);
MapInfoWebUpdateEntireGroupZoomDisplay(lyrCntrlID);
var grpsArray = eval("_groups_"+lyrCntrlID);
for ( i=0;i<grpsArray.Layers.length;i++ )
{
var form=document.forms[0];
var elemID = grpsArray.Layers[i].alias;
var elemValue = MapInfoWebBuildGroupsPropertiesString(grpsArray.Layers[i], lyrCntrlID);
MapInfoWebCreateHiddenField(form, elemID, elemID, elemValue);
}
// Write out tree state to hidden field
elemID = lyrCntrlID+"_TreeStateData";
elemValue = MapInfoWebBuildTreeState(lyrCntrlID);
MapInfoWebCreateHiddenField(form, elemID, elemID, elemValue);
eval("_lyrcntrl_"+lyrCntrlID).DoPostBack();
}
function MapInfoWebBuildPropertiesString(layer, lyrCntrlID){
var sep = "^";
var propString;
propString = eval("_map_"+lyrCntrlID).zoom + sep;
propString = propString + layer.name + sep;
propString = propString + layer.type + sep;
propString = propString + layer.visible + sep;
propString = propString + layer.visiblerangeenabled + sep;
propString = propString + layer.rangestart + sep;
propString = propString + layer.rangeend + sep;
propString = propString + layer.id;
return propString;
}
function MapInfoWebBuildGroupsPropertiesString(group, lyrCntrlID){
var sep = "^";
var propString;
propString = group.alias + sep;
propString = propString + group.allvisible + sep;
propString = propString + group.visible + sep;
propString = propString + group.allzoomrange + sep;
propString = propString + group.visiblerangeenabled + sep;
propString = propString + group.rangestart + sep;
propString = propString + group.rangeend + sep;
return propString;
}
// Map object
function MapInfoWebMap()
{
this.name="";
this.zoom="";
}
function MapInfoWebLayerControlPanel()
{
this.panel="";
}
function MapInfoWebGroupLayers()
{
}
function MapInfoWebGroupLayer()
{
this.alias="";
this.allvisible="";
this.visible="";
this.allzoomrange="";
this.visiblerangeenabled="";
this.rangestart="";
this.rangeend="";
}
function MapInfoWebUpdateGroupVisible(lyrCntrlID)
{
if (_curGroupLayer)
{
var allvisElem = document.getElementById("chkEntireGrpVisible_"+lyrCntrlID);
var visElem = document.getElementById("chkGrpVisible_"+lyrCntrlID);
if (allvisElem.checked == true)
{
_curGroupLayer.allvisible = "True";
visElem.disabled = false;
} else {
_curGroupLayer.allvisible = "False";
visElem.disabled = true;
}
if (visElem.checked == true)
{
_curGroupLayer.visible = "True";
} else {
_curGroupLayer.visible = "False";
}
updateGroupLayerArray(lyrCntrlID);
}
}
function MapInfoWebUpdateEntireGroupZoomDisplay(lyrCntrlID)
{
if (_curGroupLayer)
{
var allvisrangeElem = document.getElementById("chkEntireGrpZoomRanged_"+lyrCntrlID);
var visrangeElem = document.getElementById("chkGrpLyrZmRange_"+lyrCntrlID);
var rangestartElem = document.getElementById("grpLyrMinzoom_"+lyrCntrlID);
var rangeendElem = document.getElementById("grpLyrMaxzoom_"+lyrCntrlID);
if (allvisrangeElem.checked == true)
{
_curGroupLayer.allzoomrange = "True";
visrangeElem.disabled = false;
} else {
_curGroupLayer.allzoomrange = "False";
visrangeElem.disabled = true;
}
if (visrangeElem.checked == true)
{
_curGroupLayer.visiblerangeenabled = "True";
} else {
_curGroupLayer.visiblerangeenabled = "False";
}
if ( visrangeElem.disabled == true )
{
rangestartElem.disabled = true;
rangeendElem.disabled = true;
} else {
if (visrangeElem.checked == true)
{
rangestartElem.disabled = false;
rangeendElem.disabled = false;
} else {
rangestartElem.disabled = true;
rangeendElem.disabled = true;
}
}
_curGroupLayer.rangestart = rangestartElem.value;
_curGroupLayer.rangeend = rangeendElem.value;
updateGroupLayerArray(lyrCntrlID);
}
}
function setGroupPanelElements(lyrCntrlID)
{
var allvisElem = document.getElementById("chkEntireGrpVisible_"+lyrCntrlID);
var visElem = document.getElementById("chkGrpVisible_"+lyrCntrlID);
var allvisrangeElem = document.getElementById("chkEntireGrpZoomRanged_"+lyrCntrlID);
var visrangeElem = document.getElementById("chkGrpLyrZmRange_"+lyrCntrlID);
var rangestartElem = document.getElementById("grpLyrMinzoom_"+lyrCntrlID);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -