define([
|
"dojo",
|
"dojo/_base/declare",
|
"dojo/_base/lang",
|
"base/BaseWidget",
|
"dojo/text!widgets/buffer/template.html",
|
"widgets/buffer/config",
|
"base/AppEvent",
|
"base/ConfigData",
|
"iframe/jcyj/js/dataShow.js",
|
"dojo/dom",
|
"dojo/dom-construct",
|
"dojo/dom-attr",
|
"dojo/dom-style",
|
"dojo/on",
|
"esri/layers/ArcGISDynamicMapServiceLayer",
|
"esri/layers/ArcGISTiledMapServiceLayer",
|
"esri/layers/FeatureLayer",
|
"controls/tab/TabControl",
|
"esri/dijit/SymbolStyler",
|
"esri/styles/basic",
|
"dojo/_base/array",
|
"esri/InfoTemplate",
|
"esri/toolbars/draw",
|
"esri/graphic",
|
"esri/symbols/SimpleFillSymbol",
|
"esri/symbols/SimpleMarkerSymbol",
|
"esri/symbols/SimpleLineSymbol",
|
"esri/Color",
|
"esri/geometry/Point",
|
"esri/tasks/GeometryService",
|
"esri/tasks/query",
|
"esri/tasks/QueryTask",
|
"dojo/_base/array",
|
"esri/geometry/normalizeUtils",
|
"esri/tasks/BufferParameters",
|
"esri/layers/GraphicsLayer",
|
"esri/graphicsUtils",
|
"dojo/domReady!"
|
], function (dojo,
|
declare,
|
lang,
|
BaseWidget,
|
template,
|
config,
|
AppEvent,
|
ConfigData,
|
dataShow,
|
dom,
|
domConstruct,
|
domAttr,
|
domStyle,
|
on,
|
ArcGISDynamicMapServiceLayer,
|
ArcGISTiledMapServiceLayer,
|
FeatureLayer,
|
TabControl,
|
SymbolStyler,
|
basic,
|
arrayUtils,
|
InfoTemplate,
|
draw,
|
Graphic,
|
SimpleFillSymbol,
|
SimpleMarkerSymbol,
|
SimpleLineSymbol,
|
Color,
|
Point,
|
GeometryService,
|
Query,
|
QueryTask,
|
array,
|
normalizeUtils,
|
BufferParameters,
|
GraphicsLayer,
|
graphicsUtils) {
|
var Widget = declare([BaseWidget], {
|
widgetName: "bufferlWidget",
|
label: "空间分析_缓冲区分析",
|
templateString: template,
|
_config: null,
|
_map: null,
|
timer: null,
|
_graphicsLayer_buffer: new GraphicsLayer(),
|
_graphicsLayer_draw: new GraphicsLayer(),
|
_graphicsLayer_query: new GraphicsLayer(),
|
bufferObj: null,
|
_bufferGeometries: [],
|
_queryGraphic: null,
|
_extent_changeEvent: null,
|
geometryService: null, //几何服务
|
inputURL: null,
|
_attributeQuery_results: [],
|
_layui: null,
|
constructor: function (options, srcRefNode) {
|
this._map = options.map;
|
bufferObj = this;
|
//初始化layui弹窗
|
layui.use('layer', function () {
|
bufferObj._layui = layui.layer;
|
});
|
},
|
postCreate: function () {
|
|
},
|
startup: function () {
|
this._config = config;
|
this._searchCatalog = this._config.searchCatalog;
|
bufferObj._init();
|
this.inherited(arguments);
|
$('.gt').unbind().click(function () {
|
$("#popup div").html(config[$(this).attr("value")]);
|
$('#popup').show();
|
});
|
|
$('#poputClose').unbind().click(function () {
|
$('#popup').hide();
|
});
|
|
$('#slider').slider({
|
disabled: false, //是否可用,true不可用 false即可用的
|
animate: true, //代表是采用动画效果
|
max: 100, //滑块的最大值是100
|
min: 0, //滑块的最小值
|
value: 25, //滑块的默认值
|
//orientation:'versvfvtical', //滑块的方向是垂直的还是水平的 horizontal
|
range: false,
|
change: bufferObj._diaphaneity
|
});
|
//采用bind绑定的方式执行 event事件
|
$('#slider').bind('stopslider', function (event, ui) {
|
console.log(event);
|
console.log(ui);
|
});
|
$('#zdyBtn').click(function () {
|
$("#bufferWidget .select-2").slideToggle("fast");
|
$('.zdybuffer').slideToggle("fast");
|
if ($(this).hasClass('on')) {
|
$(this).removeClass('on');
|
$('#zdyBtn').text("使用图层");
|
} else {
|
$(this).addClass('on');
|
$('#zdyBtn').text("自定要素");
|
}
|
});
|
$("#jian").hide();
|
$('#buffFwBtn').click(function () {
|
$('.buffer-range').slideToggle("fast");
|
if ($(this).hasClass('one')) {
|
$(this).removeClass('one');
|
$("#jian").show();
|
$("#jia").hide();
|
} else {
|
$(this).addClass('one');
|
$("#jian").hide();
|
$("#jia").show();
|
}
|
});
|
bufferObj.geometryService = new GeometryService(ConfigData.geometryServiceUrl); //几何服务
|
bufferObj._drawGraphics(); //初始化绘图事件
|
//选择市触发事件--查询对应的县区
|
on(dom.byId("city"), "change", function () {
|
$('#county').empty().append("<option selected=\"selected\">县区/全市</option>");
|
$('#featuresResult table').empty();
|
$('#featuresResult div').remove();
|
bufferObj._countyQuery();
|
});
|
on(dom.byId("county"), "change", function () {
|
$('#featuresResult table').empty();
|
$('#featuresResult div').remove();
|
bufferObj._areaQuery();
|
});
|
on(dom.byId("selectBufferLayer"), "click", function () {
|
$("#buff_tree").slideToggle("fast");
|
});
|
$("#selectBufferLayer").blur(function () {
|
$("#buff_tree").slideUp("fast");
|
});
|
on(dom.byId("buff_tree"), "mouseenter", function () {
|
$("#selectBufferLayer").unbind("blur");
|
});
|
on(dom.byId("buff_tree"), "mouseleave", function () {
|
$("#selectBufferLayer").focus();
|
$("#selectBufferLayer").blur(function () {
|
$("#buff_tree").slideUp("fast");
|
});
|
});
|
// $("#selectBufferLayer").keyup(function() {
|
// if(!$(this).val()) {
|
// bufferObj.inputURL = null;
|
// }
|
// });
|
on(dom.byId("querytext"), "keyup", function () {
|
$('#featuresResult table').empty();
|
$('#featuresResult div').remove();
|
var results = [];
|
for (var i in bufferObj._attributeQuery_results) {
|
if (bufferObj._attributeQuery_results[i].indexOf($("#querytext").val()) != -1) {
|
results.push(bufferObj._attributeQuery_results[i]);
|
}
|
}
|
//执行查询回调函数--获取满足条件的要素,并对查询结果进行分页展示
|
$('#featuresResult table').empty();
|
$('#featuresResult div').remove();
|
if (results.length > 0) {
|
for (var i in results) {
|
$('#featuresResult table').append("<tr><td>" + (parseInt(i) + 1) + "、" + results[i] + "</td>></tr>");
|
}
|
$("#idData").unbind("click");
|
$("#idData").click(function (evt) {
|
var text = $(evt.target).text().split("、");
|
$('#querytext').val(text[1]);
|
});
|
}
|
if (results.length > 10) {
|
$('#featuresResult table').after("<div id='barcon' name='barcon'></div>");
|
bufferObj._Result_fenye(1, 10);
|
}
|
// bufferObj._attributeQuery();
|
});
|
on(dom.byId("current_extent"), "click", function () {
|
if ($("#current_extent").hasClass("current_extent")) {
|
$("#current_extent").removeClass("current_extent");
|
$("#city").removeAttr("disabled");
|
$("#county").removeAttr("disabled");
|
bufferObj._extent_changeEvent.remove();
|
$('#featuresResult table').empty();
|
$('#featuresResult div').remove();
|
bufferObj._queryGraphic = null;
|
bufferObj._attributeQuery();
|
} else {
|
$("#current_extent").addClass("current_extent");
|
$("#city").attr("disabled", "disabled");
|
$("#county").attr("disabled", "disabled");
|
$('#featuresResult table').empty();
|
$('#featuresResult div').remove();
|
$('#county').empty().append("<option selected=\"selected\">县区/全市</option>");
|
$("#city option:first").prop("selected", 'selected');
|
bufferObj._queryGraphic = bufferObj._map.extent;
|
bufferObj._attributeQuery();
|
bufferObj._extent_changeEvent = bufferObj._map.on("extent-change", function (e) {
|
bufferObj._queryGraphic = e.extent;
|
bufferObj._attributeQuery();
|
});
|
}
|
});
|
on(dom.byId("querytext"), "mousedown", function () {
|
$('#featuresResult').show();
|
});
|
on(dom.byId("featuresResult"), "mouseleave", function () {
|
$('#featuresResult').toggle();
|
});
|
on(dom.byId("bufferBtn"), "click", function () {
|
if ($(".zdybuffer").is(":visible")) {
|
var plg = 0,
|
mlpt = 0,
|
pll = 0;
|
for (var a in bufferObj._bufferGeometries) {
|
switch (bufferObj._bufferGeometries[a].type) {
|
case "polygon":
|
plg = 1;
|
break;
|
case "extent":
|
plg = 1;
|
break;
|
case "multipoint":
|
mlpt = 1;
|
break;
|
case "polyline":
|
pll = 1;
|
break;
|
default:
|
break;
|
}
|
}
|
if (plg + mlpt + pll > 1) {
|
alert("请输入相同类型几何要素");
|
return;
|
}
|
bufferObj._Buffer();
|
} else {
|
bufferObj._bufferQuery();
|
}
|
});
|
bufferObj._map.addLayer(bufferObj._graphicsLayer_buffer);
|
bufferObj._map.addLayer(bufferObj._graphicsLayer_draw);
|
bufferObj._map.addLayer(bufferObj._graphicsLayer_query);
|
AppEvent.addAppEventListener(AppEvent.APPLICATION_CLEAR, lang.hitch(this, function () {
|
bufferObj._graphicsLayer_buffer.clear();
|
bufferObj._graphicsLayer_draw.clear();
|
bufferObj._graphicsLayer_query.clear();
|
bufferObj._bufferGeometries = [];
|
bufferObj._map.infoWindow.hide();
|
}));
|
$('#buffer_return').unbind("click").click(function () {
|
bufferObj._graphicsLayer_buffer.clear();
|
bufferObj._graphicsLayer_draw.clear();
|
bufferObj._graphicsLayer_query.clear();
|
bufferObj._bufferGeometries = [];
|
$('#distance').val('');
|
$('#querytext').val('');
|
});
|
},
|
open: function () {
|
this.inherited(arguments);
|
},
|
_init: function () {
|
//读取后台接口,添加图层选项
|
var _ztreeObj = [];
|
// $.ajax({
|
// type: "get",
|
// // url: ConfigData.ajaxURL,
|
// url:getNativePath() + "resources/queryResourcesTree.do?soId=bbb7001c67c442540167c4a2a604000b",
|
// data: {
|
// "limit": 1000
|
// },
|
// dataType: "json",
|
// async: false,
|
// success: function (result) {
|
// var resultObj = result.data;
|
// for (var i = 0; i < resultObj.length; i++) {
|
// var searchCatalog = {};
|
// searchCatalog.id = resultObj[i].resourcesId;
|
// searchCatalog.pId = resultObj[i].resourcesPid;
|
// searchCatalog.name = resultObj[i].resourcesName;
|
// searchCatalog.Url = resultObj[i].resourcesUrl;
|
// _ztreeObj.push(searchCatalog);
|
// }
|
// return _ztreeObj;
|
// },
|
// error: function (e) {
|
// alert(e.message);
|
// }
|
// });
|
var setting = {
|
|
// view: {
|
// addDiyDom: SpaceObj._addDiyDom
|
// },
|
data: {
|
simpleData: {
|
enable: true
|
}
|
},
|
callback: {
|
beforeClick: bufferObj._beforeClick,
|
onClick: bufferObj._zTreeOnClick
|
}
|
};
|
$.fn.zTree.init($("#buffe_tree"), setting, _ztreeObj);
|
},
|
_beforeClick: function (treeId, treeNode) {
|
var check = (treeNode && !treeNode.isParent);
|
return check;
|
},
|
_zTreeOnClick: function (event, treeId, treeNode) {
|
$('#buff_tree').fadeOut();
|
bufferObj.inputURL = treeNode.Url;
|
$("#selectBufferLayer").attr("value", treeNode.name);
|
bufferObj._attributeQuery();
|
},
|
_drawGraphics: function () { //自定义绘制图形
|
//添加点样式
|
var markerSymbol = SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 5,
|
new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID,
|
new Color([255, 0, 0]), 2),
|
new Color([0, 255, 0, 0.25]));
|
|
// 添加线样式
|
var lineSymbol = new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([255, 0, 0]), 2);
|
|
// 添加面样式
|
var fillSymbol = new SimpleFillSymbol(
|
SimpleFillSymbol.STYLE_SOLID,
|
new SimpleLineSymbol(
|
SimpleLineSymbol.STYLE_SOLID,
|
new Color([255, 0, 0, 1]),
|
2
|
),
|
new Color([0, 0, 0, 0.25])
|
);
|
|
//定义绘制工具初始化函数
|
function initToolbar() {
|
tb = new draw(bufferObj._map);
|
tb.on("draw-complete", addGraphic);
|
// 绘制按钮点击事件,获取需要绘制的形状
|
on(dom.byId("buffer-drawTools"), "click", function (evt) {
|
if (evt.target.id === "buffer-drawTools") {
|
return;
|
}
|
if (evt.target.id === "clearAll") { //清除按钮清除事件
|
bufferObj._graphicsLayer_draw.clear();
|
bufferObj._bufferGeometries = [];
|
tb.deactivate();
|
$('.buffer-drawTools-active').removeClass('buffer-drawTools-active');
|
bufferObj._map.enableMapNavigation();
|
return;
|
}
|
$('.buffer-drawTools-active').removeClass('buffer-drawTools-active');
|
$(evt.target).addClass('buffer-drawTools-active');
|
var tool = evt.target.id.toLowerCase();
|
bufferObj._map.disableMapNavigation();
|
tb.activate(tool);
|
});
|
}
|
|
//定义绘制结束回调函数--添加绘制图形至地图GraphicLayer图层中
|
function addGraphic(evt) {
|
//deactivate the toolbar and clear existing graphics
|
tb.deactivate();
|
bufferObj._map.enableMapNavigation();
|
|
// 选择绘制的形状
|
var symbol;
|
if (evt.geometry.type === "point" || evt.geometry.type === "multipoint") {
|
symbol = markerSymbol;
|
} else if (evt.geometry.type === "line" || evt.geometry.type === "polyline") {
|
symbol = lineSymbol;
|
} else {
|
symbol = fillSymbol;
|
}
|
bufferObj._bufferGeometries.push(evt.geometry);
|
bufferObj._graphicsLayer_draw.add(new Graphic(evt.geometry, symbol));
|
}
|
|
initToolbar(); //执行绘制工具初始化函数
|
},
|
//COUNTY查询--在县区选择栏中动态添加所包含的县区
|
_countyQuery: function () {
|
var Url = ConfigData.areaQueryURL + "/2";
|
var queryTask = new QueryTask(Url);
|
var query = new Query();
|
query.returnGeometry = false;
|
query.outFields = [
|
"COUNTY"
|
];
|
var queryParam;
|
if ($('#city option:selected').text() != "市/全省") {
|
queryParam = "CITY like '%" + $('#city option:selected').text() + "%'";
|
}
|
if (queryParam == null) {
|
bufferObj._queryGraphic = null;
|
bufferObj._attributeQuery();
|
return;
|
}
|
query.where = queryParam;
|
queryTask.execute(query, function (results) {
|
var optionVal = results.features;
|
for (var i in optionVal) {
|
$('#county').append("<option>" + optionVal[i].attributes["COUNTY"] + "</option>");
|
}
|
bufferObj._areaQuery();
|
});
|
},
|
//行政区查询
|
_areaQuery: function () {
|
var queryParam;
|
if ($('#city option:selected').text() != "市/全省") {
|
var cityName = $('#city option:selected').text();
|
if ($('#county option:selected').text() == "县区/全市" && ConfigData.XZQfeatures) {
|
for (var i in ConfigData.XZQfeatures) {
|
if (ConfigData.XZQfeatures[i].attributes["CITY"] == cityName) {
|
bufferObj._queryGraphic = ConfigData.XZQfeatures[i].geometry;
|
setTimeout(bufferObj._attributeQuery(), 100);
|
return;
|
}
|
}
|
} else {
|
queryParam = "CITY like '%" + $('#city option:selected').text() + "%'";
|
queryParam += "and COUNTY like '%" + $('#county option:selected').text() + "%'";
|
var URL = ConfigData.areaQueryURL + "/2";
|
}
|
}
|
if (queryParam == null) {
|
bufferObj._queryGraphic = null;
|
bufferObj._attributeQuery();
|
return;
|
}
|
var queryTask = new QueryTask(URL);
|
var query = new Query();
|
query.returnGeometry = true;
|
// query.outFields = [
|
// "*"
|
// ];
|
query.where = queryParam;
|
queryTask.execute(query, function (results) {
|
var len = results.features;
|
if (len.length > 0) {
|
//获取查询几何结果并查询结果所包含的要素
|
bufferObj._queryGraphic = len[0].geometry;
|
bufferObj._attributeQuery();
|
}
|
});
|
},
|
//查询所选区域的所有要素,并输出
|
_attributeQuery: function () {
|
var url = bufferObj.inputURL;
|
if (url == null) {
|
return;
|
}
|
var queryTask = new QueryTask(url);
|
var query = new Query();
|
query.returnGeometry = false;
|
query.outFields = [
|
"*"
|
];
|
if (bufferObj._queryGraphic) {
|
query.geometry = bufferObj._queryGraphic;
|
}
|
if ($('#querytext').val() == "" || $('#querytext').val() == null) {
|
query.where = "1 = 1";
|
} else if ($('#querytext').val() != "" && $('#querytext').val() != null) {
|
query.text = $('#querytext').val();
|
}
|
queryTask.execute(query, function (results) {
|
//执行查询回调函数--获取满足条件的要素,并保存至全局变量以供查询匹配
|
bufferObj._attributeQuery_results = [];
|
if ($('#selectBufferLayer').val().indexOf("城") != -1) {//筛选出城区湿地
|
for (var i = 0; i < results.features.length; i++) {
|
if(results.features[i].attributes[results.displayFieldName] && (results.features[i].attributes[results.displayFieldName]).length>1){
|
bufferObj._attributeQuery_results.push(results.features[i].attributes[results.displayFieldName] +
|
"第" + results.features[i].attributes["WETLAND_NO"] + "号湿地斑块");
|
}
|
}
|
} else {
|
for (var i = 0; i < results.features.length; i++) {
|
if(results.features[i].attributes[results.displayFieldName] && (results.features[i].attributes[results.displayFieldName]).length>1){
|
bufferObj._attributeQuery_results.push(results.features[i].attributes[results.displayFieldName]);
|
}
|
}
|
}
|
//执行查询回调函数--获取满足条件的要素,并对查询结果进行分页展示
|
$('#featuresResult table').empty();
|
$('#featuresResult div').remove();
|
if (bufferObj._attributeQuery_results.length > 0) {
|
for (var i in bufferObj._attributeQuery_results) {
|
$('#featuresResult table').append("<tr><td>" + (parseInt(i) + 1) + "、" + bufferObj._attributeQuery_results[i] + "</td>></tr>");
|
}
|
$("#idData").unbind("click");
|
$("#idData").click(function (evt) {
|
var text = $(evt.target).text().split("、");
|
$('#querytext').val(text[1]);
|
});
|
}
|
if (bufferObj._attributeQuery_results.length > 10) {
|
$('#featuresResult table').after("<div id='barcon' name='barcon'></div>");
|
bufferObj._Result_fenye(1, 10);
|
}
|
});
|
},
|
_bufferQuery: function () {
|
if (bufferObj.inputURL == null) {
|
alert("请选择或绘制需要进行缓冲区分析的要素");
|
return;
|
}
|
if (dom.byId("distance").value == "" || isNaN(dom.byId("distance").value)) {
|
alert("请选输入缓冲半径");
|
return;
|
}
|
var queryFeatureLayer = new FeatureLayer(bufferObj.inputURL);
|
var query = new Query();
|
query.returnGeometry = true;
|
// query.outFields = [
|
// "*"
|
// ];
|
if (bufferObj._queryGraphic != null) {
|
query.geometry = bufferObj._queryGraphic;
|
} else if ($('#current_extent').hasClass('current_extent')) {//默认使用当前地图范围进行分析
|
query.geometry = bufferObj._map.extent;
|
}
|
if ($.trim($('#querytext').val()) == "") {
|
query.where = "1 = 1";
|
} else if ($('#querytext').val() != "" && $('#querytext').val() != null) {
|
query.text = $('#querytext').val();
|
}
|
$("#bg").show();
|
bufferObj.timer = window.setTimeout(function () {
|
$("#bg").hide();
|
alert("服务超时,检查网络连接或使用高级选项-定制区域缩小分析范围或指定要素进行缓冲区分析");
|
}, 150000);
|
queryFeatureLayer.queryCount(query, function (results) {
|
if (queryFeatureLayer.geometryType == "esriGeometryPolygon") {
|
var limitCount = 20;
|
} else if (queryFeatureLayer.geometryType == "esriGeometryPolyline") {
|
var limitCount = 100;
|
} else if (queryFeatureLayer.geometryType == "esriGeometryPoint") {
|
var limitCount = 500;
|
}
|
if (results > limitCount) {
|
clearTimeout(bufferObj.timer);
|
$("#bg").hide();
|
alert("缓冲要素过多,请使用高级选项-定制区域缩小分析范围或指定要素进行缓冲区分析");
|
return;
|
}
|
queryFeatureLayer.queryFeatures(query, function (results) {
|
// console.log(results);
|
bufferObj._bufferGeometries = [];
|
var queryResults = results.features;
|
if (queryResults.length > 0) {
|
for (var y in queryResults) {
|
bufferObj._bufferGeometries.push(queryResults[y].geometry);
|
}
|
//执行缓冲区分析
|
var featureExtent = graphicsUtils.graphicsExtent(queryResults);
|
bufferObj._map.setExtent(featureExtent);
|
setTimeout(bufferObj._Buffer(), 100);
|
return;
|
} else {
|
bufferObj._bufferGeometries = [];
|
$("#bg").hide();
|
clearTimeout(bufferObj.timer);
|
alert("没有查询到符合条件的要素");
|
return;
|
}
|
}, function (e) {
|
clearTimeout(bufferObj.timer);
|
console.log(e.message);
|
$("#bg").hide();
|
});
|
}, function (e) {
|
clearTimeout(bufferObj.timer);
|
console.log(e.message);
|
$("#bg").hide();
|
});
|
},
|
_Buffer: function () {
|
if (bufferObj._bufferGeometries.length < 1) {
|
$("#bg").hide();
|
clearTimeout(bufferObj.timer);
|
alert("请选择或绘制需要进行分析的要素");
|
return;
|
}
|
if (dom.byId("distance").value == "" || isNaN(dom.byId("distance").value)) {
|
$("#bg").hide();
|
clearTimeout(bufferObj.timer);
|
alert("请选输入缓冲半径");
|
return;
|
}
|
//setup the buffer parameters
|
var params = new BufferParameters();
|
if ($("#unit option:selected").text() == "里") {
|
params.distances = [parseFloat(dom.byId("distance").value) * 500];
|
} else {
|
params.distances = [dom.byId("distance").value];
|
}
|
params.outSpatialReference = bufferObj._map.spatialReference;
|
params.bufferSpatialReference = bufferObj._map.spatialReference;
|
params.geodesic = true;
|
params.unit = GeometryService[dom.byId("unit").value];
|
|
//标准化几何图形
|
normalizeUtils.normalizeCentralMeridian(bufferObj._bufferGeometries, bufferObj.geometryService).then(function (normalizedGeometries) {
|
var normalizedGeometrires_polygon = [];
|
var normalizedGeometrires_else = [];
|
for (var x in normalizedGeometries) {
|
if (normalizedGeometries[x].type === "polygon") {
|
//筛选出几何多边形
|
normalizedGeometrires_polygon.push(normalizedGeometries[x]);
|
} else {
|
normalizedGeometrires_else.push(normalizedGeometries[x]);
|
}
|
}
|
if (normalizedGeometrires_polygon.length > 0) {
|
//简化多边形,并使用户绘制多边形拓扑正确
|
bufferObj.geometryService.simplify(normalizedGeometrires_polygon, function (geometries) {
|
if (normalizedGeometrires_else.length > 0) {
|
Array.prototype.push.apply(normalizedGeometrires_else, geometries);
|
params.geometries = normalizedGeometrires_else;
|
} else {
|
params.geometries = geometries;
|
}
|
bufferObj.geometryService.buffer(params, showBuffer, errorBuffer);
|
});
|
} else {
|
params.geometries = normalizedGeometrires_else;
|
bufferObj.geometryService.buffer(params, showBuffer, errorBuffer);
|
}
|
});
|
|
//缓冲分析回调函数
|
function showBuffer(bufferedGeometries) {
|
var bufferedGeometries = bufferedGeometries;
|
// console.log(bufferedGeometries);
|
var symbol;
|
//添加点样式
|
var markerSymbol = SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 5,
|
new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID,
|
new Color([255, 0, 0]), 1),
|
new Color([255, 0, 0, 1]));
|
|
// 添加线样式
|
var lineSymbol = new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([255, 0, 0]), 2);
|
|
// 添加面样式
|
var fillSymbol = new SimpleFillSymbol(
|
SimpleFillSymbol.STYLE_SOLID,
|
new SimpleLineSymbol(
|
SimpleLineSymbol.STYLE_SOLID,
|
new Color([255, 0, 0, 0.65]),
|
2
|
),
|
new Color([255, 0, 0, 0.65])
|
);
|
var buffersymbol = new SimpleFillSymbol(
|
SimpleFillSymbol.STYLE_SOLID,
|
new SimpleLineSymbol(
|
SimpleLineSymbol.STYLE_SOLID,
|
new Color([0, 255, 255, $("#slider").slider("value") / 100]), 2
|
),
|
new Color([0, 255, 255, $("#slider").slider("value") / 100])
|
);
|
//清空上次结果
|
bufferObj._graphicsLayer_query.clear();
|
bufferObj._graphicsLayer_buffer.clear();
|
bufferObj._graphicsLayer_draw.clear();
|
//遍历结果,并添加进入地图
|
for (var y in bufferedGeometries) {
|
// 选择绘制的形状
|
if (bufferObj._bufferGeometries[y].type === "point" || bufferObj._bufferGeometries[y].type === "multipoint") {
|
symbol = markerSymbol;
|
} else if (bufferObj._bufferGeometries[y].type === "line" || bufferObj._bufferGeometries[y].type === "polyline") {
|
symbol = lineSymbol;
|
} else {
|
symbol = fillSymbol;
|
}
|
//遍历结果,并添加进入地图
|
bufferObj._graphicsLayer_query.add(new Graphic(bufferObj._bufferGeometries[y], symbol));
|
bufferObj._graphicsLayer_buffer.add(new Graphic(bufferedGeometries[y], buffersymbol));
|
}
|
clearTimeout(bufferObj.timer);
|
$("#bg").hide();
|
//清空参与缓冲要素的记录
|
bufferObj._bufferGeometries = [];
|
}
|
|
//错误回调函数
|
function errorBuffer(err) {
|
clearTimeout(bufferObj.timer);
|
$("#bg").hide();
|
console.log(err);
|
alert("服务超时,请减小数据量并检查网络连接");
|
return;
|
}
|
},
|
//分页函数
|
_Result_fenye: function (pno, psize) {
|
var itable = document.getElementById("idData");
|
var num = itable.rows.length; //表格所有行数(所有记录数)
|
//console.log(num);
|
var totalPage = 0; //总页数
|
var pageSize = psize; //每页显示行数
|
//总共分几页
|
if (num / pageSize > parseInt(num / pageSize)) {
|
totalPage = parseInt(num / pageSize) + 1;
|
} else {
|
totalPage = parseInt(num / pageSize);
|
}
|
var currentPage = pno; //当前页数
|
var startRow = (currentPage - 1) * pageSize + 1; //开始显示的行 31
|
var endRow = currentPage * pageSize; //结束显示的行 40
|
endRow = (endRow > num) ? num : endRow;
|
//console.log(endRow);
|
//遍历显示数据实现分页
|
for (var i = 1; i < (num + 1); i++) {
|
var irow = itable.rows[i - 1];
|
if (i >= startRow && i <= endRow) {
|
irow.style.display = "block";
|
} else {
|
irow.style.display = "none";
|
}
|
}
|
if (num < 100) {
|
var tempStr = "共" + num + "条记录 共" + totalPage + "页 当前第" + currentPage + "页</br>";
|
} else {
|
var tempStr = "共" + num + "条记录 共" + totalPage + "页 当前第" + currentPage + "页</br>";
|
}
|
if (currentPage > 1) {
|
tempStr += "<a href=\"#\" onClick=\"bufferObj._Result_fenye(" + (1) + "," + psize + ")\">首页<</a>";
|
tempStr += "<input type='button' value='上一页' onClick=\"bufferObj._Result_fenye(" + (currentPage - 1) + "," + psize + ")\"></input>"
|
} else {
|
tempStr += "首页";
|
tempStr += "<上一页";
|
}
|
if (currentPage < totalPage) {
|
tempStr += "<input type='button' value='下一页' onClick=\"bufferObj._Result_fenye(" + (currentPage + 1) + "," + psize + ")\">></input>";
|
tempStr += "<a href=\"#\" onClick=\"bufferObj._Result_fenye(" + (totalPage) + "," + psize + ")\">尾页</a>";
|
} else {
|
tempStr += "下一页>";
|
tempStr += "尾页";
|
}
|
document.getElementById("barcon").innerHTML = tempStr;
|
},
|
//缓冲区透明度调节函数
|
_diaphaneity: function () {
|
var val = $("#slider").slider("value") / 100;
|
var symbol = new SimpleFillSymbol(
|
SimpleFillSymbol.STYLE_SOLID,
|
new SimpleLineSymbol(
|
SimpleLineSymbol.STYLE_SOLID,
|
new Color([0, 255, 255, val]), 1
|
),
|
new Color([0, 255, 255, val])
|
);
|
var buffergraphics = bufferObj._graphicsLayer_buffer.graphics;
|
bufferObj._graphicsLayer_buffer.clear();
|
for (var num in buffergraphics) {
|
buffergraphics[num].setSymbol(symbol);
|
bufferObj._graphicsLayer_buffer.add(buffergraphics[num]);
|
}
|
}
|
});
|
return Widget;
|
});
|