有待解决。
已解决。
代码如下:
/*属性查询*/
var searchResultContent = "";
var position = 0;
function attQuery(field, value, index, symbol,level,isClear,isLocate,isCatagory) {
if (isClear == true) {
map.graphics.clear();
}
if (isCatagory == false);
{
searchResultContent = ""
position = 0;
}
var url = "http://meng/ArcGIS/rest/services/StatisticData/MapServer/" + index;
var queryTask = new esri.tasks.QueryTask(url);
var query = new esri.tasks.Query();
query.returnGeometry = true;
query.outFields = ["zonename", "type"];
query.where = field + " Like '%" + value + "%'";
dojo.connect(queryTask, "onComplete", function(featureSet) {
var showXBExtent;
searchResultContent = searchResultContent + "<h3>" + level + "</h3>";
for (var i = 0, il = featureSet.features.length; i < il; i++) {
var graphic = featureSet.features[i];
graphic.setSymbol(symbol);
graphic.setInfoTemplate(statinfoTemplate);
map.graphics.add(graphic);
if (i == 0) {
showXBExtent = graphic.geometry.getExtent();
}
else {
showXBExtent = showXBExtent.union(graphic.geometry.getExtent());
}
searchResultContent = searchResultContent + "<A " +
"onclick = lightenGraphic(" + index + "," + position + ");" +
"onmouseout = unlightenGraphic();" +
"href=\"javascript:void(0)\";>" + graphic.attributes["zonename"] + "</A>" + " "; //循环动态生成html元素并且绑定事件处理方法 added by zhangjun
position = position + 1;
}
get_ImageStatistics_Infos(searchResultContent);
if (isLocate == true) {
if (showXBExtent != null) {
map.setExtent(showXBExtent.expand(1.5));
}
}
else {
fullExtent();
}
});
dojo.connect(queryTask, "onError",function(err) {
alert(err.name + ":" + err.message);
});
queryTask.execute(query);
}
/*添加影像统计信息*/
function get_ImageStatistics_Infos(response) {
$('statistics_result').style.display = "block";
$('statistics_result').innerHTML = response;
}
/*高亮显示graphic*/
function lightenGraphic(index,position) {
var a, value = "";
a = document.getElementById("statistics_result").getElementsByTagName("A");
value = a[position].innerHTML;
var symbol;
switch (index) {
case 0:
symbol = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID,
new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID,
new dojo.Color([0, 0, 0, 1]), 0.5), new dojo.Color([0, 255, 255, 1]));
break;
case 1:
symbol = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID,
new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID,
new dojo.Color([0, 0, 0, 1]), 0.5), new dojo.Color([255, 0, 0, 1]));
break;
}
var lightSymbol = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID,
new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID,
new dojo.Color([0, 0, 0, 1]), 0.5), new dojo.Color([255, 255, 0, 1]));
for (var k = 0; k < map.graphics.graphics.length; k++) {
if (map.graphics.graphics[k].attributes["zonename"] == value) {
map.graphics.graphics[k].setSymbol(lightSymbol);
graphicLocation = k;
map.setExtent(map.graphics.graphics[k].geometry.getExtent().expand(4));
setTimeout("recoverSymbol("+index+")", 800); //0.8秒
}
}
}
var graphicLocation;
/*恢复symbol*/
function recoverSymbol(index) {
var symbol;
switch (index) {
case 0:
symbol = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID,
new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID,
new dojo.Color([0, 0, 0, 1]), 0.5), new dojo.Color([0, 255, 255, 1]));
break;
case 1:
symbol = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID,
new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID,
new dojo.Color([0, 0, 0, 1]), 0.5), new dojo.Color([255, 0, 0, 1]));
break;
}
map.graphics.graphics[graphicLocation].setSymbol(symbol);
}