define(["dojo/_base/declare", "esri/geometry/Point", "esri/geometry/Polygon", "esri/symbols/SimpleMarkerSymbol", "esri/symbols/SimpleLineSymbol", "esri/symbols/SimpleFillSymbol", "esri/layers/GraphicsLayer", "esri/graphic", "esri/Color", "dojo/dom", "dojo/dom-construct", "dojo/dom-attr", "dojo/dom-style"], function (declare, Point, Polygon, SimpleMarkerSymbol, SimpleLineSymbol, SimpleFillSymbol, GraphicsLayer, Graphic, Color, dom, construct, attr, style) {
|
var clazz;
|
clazz = declare("Grid", null, {
|
constructor: function () {},
|
show: function (data, visible, callback) {
|
var oldLayer = map.getLayer("gridLayer");
|
if (oldLayer != undefined) {
|
map.removeLayer(oldLayer);
|
map.graphics.clear();
|
if (!visible) {
|
return
|
}
|
}
|
if (!visible) {
|
return
|
}
|
var domConstruct = construct;
|
var domAttr = attr;
|
var domStyle = style;
|
var Dom = dom;
|
var graLayer = new GraphicsLayer({
|
id: "gridLayer"
|
});
|
map.addLayer(graLayer);
|
for (var i = 0; i < data.length; i++) {
|
var count = parseFloat(data[i].COUNT);
|
var cateGoryCount = parseFloat(data[i].CATEGORYCOUNT);
|
var x = parseFloat(data[i].XY.split(",")[0]);
|
var y = parseFloat(data[i].XY.split(",")[1]);
|
var color = this.getArrayColor(count);
|
var arraylist = [];
|
arraylist.push([x, y]);
|
arraylist.push([x + 1, y]);
|
arraylist.push([x + 1, y + 1]);
|
arraylist.push([x, y + 1]);
|
arraylist.push([x, y]);
|
var 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, 0.3]), 1), new dojo.Color(color));
|
var polygon = new Polygon({
|
"rings": [arraylist]
|
});
|
var graphic = new esri.Graphic(polygon, symbol, {
|
name: count,
|
x: x,
|
y: y,
|
cateGoryCount: cateGoryCount
|
});
|
graLayer.add(graphic)
|
}
|
graLayer.on("mouse-over", function (e) {
|
callback;
|
map.setMapCursor("pointer");
|
var scrPt = map.toScreen(e.graphic.geometry);
|
var textDiv = domConstruct.create("div");
|
var x = e.graphic.attributes.x;
|
var y = e.graphic.attributes.y;
|
var p = new Point({
|
x: x,
|
y: y
|
});
|
var scr = map.toScreen(p);
|
domAttr.set(textDiv, {
|
"id": "text"
|
});
|
domStyle.set(textDiv, {
|
"left": scr.x + "px",
|
"top": (scr.y + 12) + "px",
|
"position": "absolute",
|
"z-index": 99,
|
"background": "#fcffd1",
|
"font-size": "13px",
|
"border": "1px solid #0096ff",
|
"padding": "0.1em 0.3em 0.1em",
|
"border-radius": "3px",
|
"box-shadow": "0 0 0.75em #777777"
|
});
|
textDiv.innerHTML = "物种数量:" + e.graphic.attributes.name + "个<br />物种种类:" + e.graphic.attributes.cateGoryCount + "个";
|
Dom.byId("map_container").appendChild(textDiv)
|
});
|
graLayer.on("mouse-out", function () {
|
callback;
|
map.setMapCursor("default");
|
try {
|
Dom.byId("map_container").removeChild(Dom.byId("text"))
|
} catch (ex) {}
|
});
|
graLayer.on("click", function (e) {
|
map.graphics.clear();
|
var defaultHLColor = "[71, 169, 5, 160]";
|
var outline = new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([255, 0, 0, 0.6]), 2);
|
var PolygonSymbol = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID, outline, new Color(eval(defaultHLColor)));
|
var graphic = new Graphic(e.graphic.geometry, PolygonSymbol);
|
map.graphics.add(graphic);
|
e.stopPropagation();
|
var xy = e.graphic.attributes.x + "," + e.graphic.attributes.y;
|
var result = JSON.stringify({
|
"XY": "" + xy + "",
|
"COUNT": e.graphic.attributes.name,
|
"CATEGORYCOUNT": e.graphic.attributes.cateGoryCount
|
});
|
if (typeof (callback) == "function") {
|
callback(result)
|
}
|
})
|
},
|
getArrayColor: function (count) {
|
var color;
|
var arraycolor = [];
|
arraycolor.push([10, 25, 74, 120]);
|
arraycolor.push([10, 25, 208, 120]);
|
arraycolor.push([10, 88, 221, 120]);
|
arraycolor.push([12, 206, 206, 120]);
|
arraycolor.push([14, 241, 103, 120]);
|
arraycolor.push([208, 243, 102, 120]);
|
arraycolor.push([255, 203, 100, 120]);
|
arraycolor.push([255, 176, 15, 120]);
|
arraycolor.push([255, 100, 10, 120]);
|
arraycolor.push([255, 82, 15, 120]);
|
arraycolor.push([255, 16, 15, 120]);
|
arraycolor.push([255, 106, 200, 120]);
|
arraycolor.push([255, 68, 200, 120]);
|
arraycolor.push([255, 0, 200, 120]);
|
if (count < 3) {
|
color = arraycolor[0]
|
} else if (count < 6) {
|
color = arraycolor[1]
|
} else if (count < 9) {
|
color = arraycolor[2]
|
} else if (count < 12) {
|
color = arraycolor[3]
|
} else if (count < 14) {
|
color = arraycolor[4]
|
} else if (count < 18) {
|
color = arraycolor[5]
|
} else if (count < 22) {
|
color = arraycolor[6]
|
} else if (count < 25) {
|
color = arraycolor[7]
|
} else if (count < 30) {
|
color = arraycolor[8]
|
} else if (count < 35) {
|
color = arraycolor[9]
|
} else if (count < 40) {
|
color = arraycolor[10]
|
} else if (count <= 45) {
|
color = arraycolor[11]
|
} else if (count > 45) {
|
color = arraycolor[12]
|
}
|
return color
|
},
|
getArrayColorMax: function () {
|
var arraycolorMAX = [];
|
arraycolorMAX.push([255, 234, 31, 120]);
|
arraycolorMAX.push([255, 218, 88, 120]);
|
arraycolorMAX.push([255, 213, 93, 120]);
|
arraycolorMAX.push([255, 194, 64, 120]);
|
arraycolorMAX.push([255, 185, 0, 120]);
|
arraycolorMAX.push([255, 179, 45, 120]);
|
arraycolorMAX.push([255, 159, 30, 120]);
|
arraycolorMAX.push([255, 145, 22, 120]);
|
arraycolorMAX.push([255, 128, 12, 120]);
|
arraycolorMAX.push([255, 116, 17, 120]);
|
arraycolorMAX.push([255, 96, 7, 120]);
|
arraycolorMAX.push([255, 68, 0, 120]);
|
arraycolorMAX.push([255, 0, 0, 120])
|
}
|
});
|
clazz.getInstance = function () {
|
if (instance === null) {
|
instance = new clazz()
|
}
|
return instance
|
};
|
return clazz
|
});
|