/*该函数实现:
点击添加图层,弹出添加图层框,输入SDE图层的名字,便可添加;
点击移除图层,弹出移除图层框,输入SDE图层的名字,便可移除。
注意:1.本函数使用数组,即添加一个图层,就向数组里push一个图层,然后map.addLayer这个数组里最后一个图层,
在移除时,首先遍历数组是否含有该图层,若有,便移除,没则提示“没有该图层”
2.如果本函数不使用数组存放图层,那么也可在map里添加很多图层,但是移除的时候只能移除最后一次添加的
图层,而不能移除之前添加的图层
* */
findFunction1: function (map) { //动态图层查询函数
//点击添加图层,弹出添加图层框
dom.byId("addLayerTool").onclick=function () {
dom.byId("addLayerContainerDiv").style.display="block";
};
//点击X,添加图层框消失
dom.byId("addLayerClose").onclick=function(){
dom.byId("addLayerContainerDiv").style.display="none";
};
//点击移除图层,弹出移除图层框
dom.byId("removeLayerTool").onclick=function () {
dom.byId("removeLayerContainerDiv").style.display="block";
};
//点击X,移除图层框消失
dom.byId("removeLayerClose").onclick=function(){
dom.byId("removeLayerContainerDiv").style.display="none";
};
//执行两个框的拖拉函数
dragFunction(dom.byId("addLayerHeaderDiv"),dom.byId("addLayerContainerDiv"));
dragFunction(dom.byId("removeLayerHeaderDiv"),dom.byId("removeLayerContainerDiv"));
//获取动态图层函数,return值是一个动态图层
function getLayerFunction(OracleLayerName){
//定义一个数据源
var dataSource=new TableDataSource();
//此处为我们设置的命名空间
dataSource.workspaceId="MyDatabaseWorkspaceID";
//命名空间下面的要素类
dataSource.dataSourceName=OracleLayerName;
//定义一个图层数据源
var layerSource=new LayerDataSource();
//给图层数据源赋值
layerSource.dataSource=dataSource;
//定义一个要素图层:注意链接为动态图层的地址
var getLayer= new FeatureLayer("http://192.168.220.132:6080/arcgis/rest/services/test1/MapServer/dynamicLayer", {
mode: FeatureLayer.MODE_ONDEMAND,
outFields: ["*"],
source: layerSource
});
var lineSymbol = new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([0, 255, 0]), 2);
var fillSymbol = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID, lineSymbol, new Color([0,255,0]));
//定义渲染器
var renderer = new SimpleRenderer(fillSymbol);
getLayer.setRenderer(renderer);
getLayer.refresh();
return getLayer;
};
//定义一个空数组,用来存放图层
var layerArray=[];
//定义一个变量K=0,在添加图层的时候用来标记数组里是否已经含有该图层,即命名是否重复
var K=0;
//定义一个变量K1,在移除图层的时候用来标记移除数组的第i个图层
var K1;
//定义一个变量K2,在移除图层的时候用来标记数组里是否含有该图层,即要移除的图层是否存在
var K2;
//添加和移除图层函数
function addAndRemoveFunction1(){
//添加图层事件
dom.byId("addLayerDetermine").onclick=function () {
//在添加图层时,for循环遍历图层数组中是否已经含有该图层
for(var i=0;i<layerArray.length;i++)
{
/* 若含有,则提示"命名重复,请更改名字",并且令K=1,即告诉程序你这个图层是新的,是可以添加
的, 并跳出该for循环*/
if(dom.byId("addLayer").value==layerArray[i].source.dataSource.dataSourceName)
{
alert("命名重复,请更改名字");
K=1;
break;
}
}
//若图层数组不含新添加的图层,则将图层push到数组里
if(K==0)
{
layerArray.push(getLayerFunction(dom.byId("addLayer").value));
}
//然后将图层数组中的最后一个元素添加到map中
map.addLayer(layerArray[layerArray.length-1]);
};
//移除图层事件
dom.byId("removeLayerDetermine").onclick=function () {
//for循环遍历图层数组中是否含有需要移除的图层
for(var i=0;i<layerArray.length;i++)
{
/*若有,把该图层的位置赋值给K1,并令K2=0,即告诉程序,你输入的图层图层数组是有的,是
可以移除的,并跳出该for循环
*/
if(dom.byId("removeLayer").value==layerArray[i].source.dataSource.dataSourceName)
{
K1=i;
K2=0;
break;
}
}
//若图层数组中含有输入的图层,那么就执行map.removeLayer(layerArray[K1]);K1是上个循环中查询的位置
if(K2==0)
{
map.removeLayer(layerArray[K1]);
}
//否则,则弹出"没有要移除的图层"
else
{
alert("没有要移除的图层");
}
};
}
//点击图层查询属性信息函数
function clickFindFunction(){
//遍历所有的图层数组元素,实现点击哪个,就显示该图层的信息
for(var i=0;i<layerArray.length;i++)
{
layerArray[i].on("click",function (evt) {
//得到点击的graphics
var graphic=evt.graphic;
var infoTemplate=new InfoTemplate("图层属性");
graphic.setInfoTemplate(infoTemplate);
//定义第一个符号
var lineSymbol1 = new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([0, 0, 255]), 2);
var fillSymbol1 = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID, lineSymbol1, new Color([0, 0, 255]));
//定义第二个符号
var lineSymbol2 = new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([255, 0, 0]), 2);
var fillSymbol2 = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID, lineSymbol2, new Color([255, 0, 0]));
function changeSymbol() { //定义一个symbol闪烁变化的函数
if (K == 0) {
graphic.setSymbol(fillSymbol1);
K = 1;
}
else {
graphic.setSymbol(fillSymbol2);
K = 0;
}
}
changeSymbol();
setInterval(changeSymbol, 500);
});
}
}
addAndRemoveFunction1();
//给点击查询绑定动态图层查询事件
dom.byId("clickTool1").onclick=function () {
clickFindFunction();
};
}