123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602 |
- /*+++++++++++++++地图管理类 所有与地图相关的内容均位于此++++++++++++++++++*/
- /* 地图组件 */
- var jtMapKit;
- /* 图层类型 */
- var LayerType = {
- server: 'server', //服务图层
- base: 'base', //基础图层
- }
- /* 定位比例尺 */
- var locationScale = 6000;
- /* 地图默认范围 */
- var initMapExtent = {
- xmin: 118.032810723,
- ymin: 34.901398239,
- xmax: 118.51750693,
- ymax: 35.521009885,
- }
- /* 案件图层的查询URL及数据过滤条件 */
- var caseServerUrl = undefined;
- var caseQueryFilter = undefined;
- let mapQueryUrl = undefined;
- let rasterLayerTitle = "baseYxtMapLayer";
- /* 图层配置 */
- var layerConfig = undefined;
- /* 当前地图用户 */
- let mapByUser = undefined;
- /**
- * 加载地图
- * @param {string} MainDivID 地图容器Id
- * @param {JSON} user 初始化位置
- */
- function MapInit(MainDivID, user) {
- mapByUser = user;
- // muiShowWaitLoading("地图初始化...");
- getNetImageRootURL(function(rootUrl) {
- /* 初始化地图组件 */
- jtMapKit = new JTMapKit({
- selector: MainDivID,
- serverUrl: rootUrl + "resource/image/",
- baseMapUrl: user.baseMapUrl,
- });
- //挂接主地图的加载事件
- jtMapKit.onViewReady = function() {
- /* 加载影像地图 */
- LoadRasterServer(function() {
- /* 初始化范围 */
- jtMapKit.zoomToExtent(initMapExtent);
- /* 加载矢量地图 */
- LoadVectorServer(function() {
- muiToast("地图初始化!");
- jtMapKit.setUIScaleBarVisible(true);
- jtMapKit.isLoad = true;
- });
- });
- }
- /* 绑定多图层查询开始事件 */
- jtMapKit.onQueryLayersTaskBegin = function() {
- plus.nativeUI.showWaiting('查询中...');
- }
- });
- }
- /**
- * 加载栅格服务
- * @param {functions} callSuccess 加载成功回调
- */
- function LoadRasterServer(callSuccess) {
- if (layerConfig) {
- let rasterLayer = undefined; /* 加载的影像服务 */
- /* 寻找当前需要显示的影像图层 */
- for (let layer of layerConfig[0].layerList) {
- if (layer.layerType === 'base' && layer.layerIsVisible === '1') {
- rasterLayer = layer;
- break;
- }
- }
- /* 加载影像图 */
- jtMapKit.addTileLayer({
- url: rasterLayer.layerURL,
- title: rasterLayerTitle,
- }, function() {
- if (callSuccess) callSuccess();
- }, function(err) {
- console.log(err);
- });
- }
- }
- /* 此处方法改造 主要是为了考虑图层加载成功或失败的问题 */
- /**
- * 添加矢量图层
- * @param {function} callComplete 完成回调
- */
- function LoadVectorServer(callComplete) {
- if (layerConfig) {
- let vectorLayers = [];
- for (let layer of layerConfig[0].layerList) {
- if (layer.layerType === 'server') {
- // vectorLayers.unshift(layer);
- vectorLayers.push(layer);
- }
- if (layer.layerType === 'server' && layer.isCase === '1') {
- caseServerUrl = layer.layerURL + "/" + layer.lyrIdx;
- caseQueryFilter = layer.layerIsFilter;
- }
- }
- /* 设置地图查询地址 */
- mapQueryUrl = layerConfig[0].layerList[0].layerURL;
- appendVectorLayers(0, vectorLayers, function() {
- if (callComplete) callComplete();
- })
- }
- }
- /**
- * 添加图层
- * @param {int} index 当前加载的图层索引
- * @param {array} layers 加载的图层数组
- * @param {function} callComplete 完成回调
- */
- function appendVectorLayers(index, layers, callComplete) {
- if (index === layers.length) {
- if (callComplete) callComplete();
- } else {
- let layer = layers[index];
- jtMapKit.addDynamicLayer({
- url: layer.layerURL,
- title: layer.eName,
- subids: [parseInt(layer.lyrIdx)],
- visible: layer.layerIsVisible === '1' ? true : false,
- labelVisible: layer.labelIsVisible === "1" ? true : false,
- filter: layer.layerIsFilter,
- }, function() {
- appendVectorLayers(index + 1, layers, callComplete);
- }, function(err) {
- appendVectorLayers(index + 1, layers, callComplete);
- });
- }
- }
- /**
- * 创建草图绘制回调工具栏
- * @param {string} btnTitle 按钮标题名称
- * @param {string} functionName 调用函数名称
- * @param {JSON} options 调用参数
- */
- function createToolsBySketch(btnTitle, functionName, options) {
- var btnHtml = "";
- btnHtml +=
- "<button class='mui-btn mui-btn-primary mui-icon app-icon app-icon-map-redo jt-btn-normal'";
- btnHtml += " onclick=\"sketchUndo()\">撤销</button>";
- btnHtml +=
- "<button class='mui-btn mui-btn-primary mui-icon app-icon app-icon-map-undo mui-right jt-btn-normal'";
- btnHtml += " onclick=\"sketchRedo()\">恢复</button>";
- if (functionName) {
- btnHtml +=
- "<button class='mui-btn mui-btn-primary mui-icon app-icon app-icon-map-areaquery jt-btn-normal wc-btn-query wc-btn-map-query'";
- btnHtml += " onclick=\"" + functionName + "(" + JSON.stringify(options).replace(/\"/g, "'") + ")\">" +
- btnTitle + "</button>";
- } else {
- btnHtml += "<button class='mui-btn mui-btn-primary jt-btn-normal wc-btn-query wc-btn-map-query'>" +
- options
- .text + "</button>";
- }
- showNormalResult(btnHtml);
- }
- /**
- * 草图工具 恢复
- */
- function sketchRedo() {
- jtMapKit.sketchRedo();
- }
- /**
- * 草图工具 回退
- */
- function sketchUndo() {
- jtMapKit.sketchUndo();
- }
- /**
- * 定位地图位置
- * @param {string} longitude 定位经度
- * @param {string} latitude 定位纬度
- */
- function mapLocation(longitude, latitude) {
- var iLongitude = parseFloat(longitude);
- var iLatitude = parseFloat(latitude);
- jtMapKit.setCenter([iLongitude, iLatitude]);
- jtMapKit.setScale(locationScale);
- }
- /**
- * 切换底图为影像底图
- */
- function EventClick_ShowRaster() {
- jtMapKit.loadBaseRasterMap(function() {
- });
- }
- /**
- * 切换底图为标准底图
- */
- function EventClick_ShowVector() {
- jtMapKit.loadBaseVectorMap(function() {
- });
- }
- /**
- * 测量长度
- */
- function EventClick_MeasureLength() {
- hideNormalResult();
- muiToast("地图单击测量长度!");
- jtMapKit.eMeasureLength(function(len) {
- createToolsBySketch('', undefined, {
- text: len,
- })
- });
- }
- /**
- * 测量面积
- */
- function EventClick_MeasureArea() {
- hideNormalResult();
- muiToast("地图单击测量面积!");
- jtMapKit.eMeasureArea(function(area) {
- createToolsBySketch('', undefined, {
- text: area,
- })
- });
- }
- /* GPS定位是否开启 */
- let gpsIsOn = false;
- /**
- * 定位位置
- */
- function EventClick_Location() {
- /* 开启或关闭方向监听 */
- if (gpsIsOn) {
- gpsIsOn = false;
- plusOrientationListenerOff(function() {
- plusGPSListenerOff(function() {
- jtMapKit.gpsRemoveFromMap();
- muiToast("定位关闭!");
- $("#spanLocationLabel").text("开启定位");
- jtMapKit.gpsSetAngle(0);
- });
- });
- } else {
- gpsIsOn = true;
- plusGPSListenerOn(function(latitude, longitude) {
- jtMapKit.gpsAppendToMap({
- longitude: longitude,
- latitude: latitude,
- });
- }, function(err) {
- muiAlert(err);
- });
- plusOrientationListenerOn(function(angle) {
- // console.log("方位角 = " + angle);
- jtMapKit.gpsSetAngle(angle);
- });
- muiToast("定位开启!");
- $("#spanLocationLabel").text("关闭定位");
- }
- }
- /**
- * 地图初始化
- */
- function EventClick_MapInit() {
- jtMapKit.zoomToExtent(initMapExtent);
- muiToast("地图范围已初始化!");
- }
- /**
- * 查询地图上点击位置的坐标
- */
- function EventClick_QueryCoord() {
- hideNormalResult();
- muiToast("地图单击,获取地理坐标!");
- jtMapKit.eMeasureCoordinate(function(res) {
- let msg = "经度:" + res.x.toFixed(6) + " 纬度:" + res.y.toFixed(6);
- showNormalResult(msg);
- });
- }
- /**
- * 输入坐标进行查询定位
- */
- function EventClick_CoordQuery() {
- mui('#popoverCoordLocation').popover('toggle');
- }
- /**
- * 输入定位按钮
- */
- function EventClick_InputLocation() {
- var longitude = $("#iLongitude").val();
- var latitude = $("#iLatitude").val();
- if (longitude == '') {
- muiAlert("请输入经度", "提示", function() {
- $("#iLongitude").focus();
- });
- return;
- }
- if (latitude == '') {
- muiAlert("请输入纬度", "提示", function() {
- $("#iLatitude").focus();
- });
- return;
- }
- var fLongitude = parseFloat(longitude);
- var fLatitude = parseFloat(latitude);
- if (fLongitude < 100 || fLongitude > 150) {
- muiAlert("经度数值必须在100~150之间", "提示", function() {
- $("#iLongitude").focus();
- });
- return;
- }
- if (fLatitude < 20 || fLatitude > 50) {
- muiAlert("纬度数值必须在20~50之间", "提示", function() {
- $("#iLatitude").focus();
- });
- return;
- }
- jtMapKit.AddPointToMap(fLongitude, fLatitude);
- }
- /**
- * 清除绘制内容 恢复地图初始状态
- */
- function EventClick_Clean() {
- jtMapKit.DeleteTempDraw(function() {
- hideNormalResult();
- });
- }
- /* 控制的图层数组 */
- var controlLayers = [];
- var controlCategorys = [];
- /**
- * 图层控制事件
- * @param {Object} btnObj 按钮
- */
- function EventClick_Layer(btnObj) {
- /* 初始化图层控制数组 */
- controlLayers = [];
- controlCategorys = [];
- /* 组装图层控制 */
- if (layerConfig) {
- /* 获取分组 */
- for (var i in layerConfig[0].categoryList) {
- var category = layerConfig[0].categoryList[i];
- controlCategorys.push({
- name: category.cyName,
- childs: "",
- });
- }
- /* 获取具体图层 */
- for (var i in layerConfig[0].layerList) {
- /* 添加到控制数组 */
- var layer = layerConfig[0].layerList[i];
- controlLayers.push(layer);
- var parLayer = {
- layerType: layer.layerType,
- eName: layer.eName,
- };
- var mmm = "";
- if (layer.layerType == LayerType.server) {
- mmm += "<div class='mui-input-row jt-layer-control-input-row'>";
- mmm += "<label><span class='app-icon app-icon-map-layer-vector'></span>" + layer
- .cName +
- "</label>";
- if (layer.layerIsVisible == "1") {
- mmm += "<input name='checkbox' type='checkbox' checked";
- } else {
- mmm += "<input name='checkbox' type='checkbox'";
- }
- mmm += " onclick=\"LayerControl(this,'" + layer.eName + "','" + layer.layerType + "')\">";
- /* 加入控制图层标注 */
- mmm += "<span class='jt-label'>标注</span>";
- if (layer.labelIsVisible == "1") {
- mmm += "<input name='checkbox' type='checkbox' checked";
- } else {
- mmm += "<input name='checkbox' type='checkbox'";
- }
- mmm += " onclick=\"LayerLabelControl(this,'" + layer.eName + "')\">";
- } else if (layer.layerType == LayerType.base) {
- mmm += "<div class='mui-input-row jt-layer-control-input-row'>";
- mmm += "<label><span class='app-icon app-icon-map-layer-raster'></span>" + layer
- .cName +
- "</label>"
- if (layer.layerIsVisible == "1") {
- mmm += "<input name='chkbaselayer' type='checkbox' checked";
- } else {
- mmm += "<input name='chkbaselayer' type='checkbox'";
- }
- mmm += " onclick=\"LayerControl(this,'" + layer.eName + "','" + layer.layerType + "')\">";
- }
- mmm += "</div>";
- /* 加入分组 */
- for (var cIdx = 0; cIdx < controlCategorys.length; cIdx++) {
- if (layer.pName == controlCategorys[cIdx].name) {
- controlCategorys[cIdx].childs += mmm;
- continue;
- }
- }
- }
- /* 组装并展示 */
- var contentHtml = "";
- for (var i in controlCategorys) {
- var content = controlCategorys[i];
- if (content.childs != "") {
- contentHtml += "<h5 class='jt-layer-control-label'>" + content.name + "</h5>";
- contentHtml += "<form class='mui-input-group jt-layer-control-content'>" + content
- .childs + "</form>";
- }
- }
- showRightResultWindow("图层管理", contentHtml);
- }
- }
- /**
- * 存储图层设置
- * @param {string} layerName 图层名称
- * @param {boolean} isVisible 显示/隐藏
- */
- function SaveLayerControl(layerName, isVisible) {
- if (layerConfig) {
- for (let layer of layerConfig[0].layerList) {
- if (layer.eName.toLocaleLowerCase() === layerName.toLocaleLowerCase()) {
- layer.layerIsVisible = isVisible === true ? "1" : "0";
- break;
- }
- }
- /* 更新图层控制信息本地化 */
- saveStorage({
- key: layerKey,
- value: JSON.stringify(layerConfig),
- })
- }
- }
- /**
- * 控制图层显示或隐藏
- * @param {Object} obj checkbox控件
- * @param {string} layerName 图层名称
- * @param {string} layerType 图层类型
- */
- function LayerControl(obj, layerName, layerType) {
- /* 定义控制图层 */
- let controlLayer = undefined;
- if (layerConfig) {
- /* 如果设置的影像基础图层 则将全部显示的图层默认设置为关闭 */
- if (layerType === LayerType.base) {
- /* 设置全部图层默认关闭 */
- for (let layer of layerConfig[0].layerList) {
- if (layer.layerType === LayerType.base) {
- layer.layerIsVisible = "0";
- }
- }
- /* 设置控件样式 */
- if (obj.checked) {
- /* 设置其他控件为关闭状态 */
- let chkObjs = document.getElementsByName('chkbaselayer');
- for (let chkObj of chkObjs) {
- chkObj.checked = false;
- }
- /* 设置当前控件为选择状态 */
- obj.checked = true;
- }
- }
- /* 先找到需要控制的图层 */
- for (let layer of layerConfig[0].layerList) {
- if (layer.eName === layerName) {
- layer.layerIsVisible = obj.checked ? "1" : "0";
- controlLayer = layer;
- }
- }
- /* 更新图层控制信息本地化 */
- saveStorage({
- key: layerKey,
- value: JSON.stringify(layerConfig),
- })
- }
- /* 判断控制的图层是 要素图层/影像图层 */
- if (controlLayer && controlLayer.layerType == LayerType.server) {
- jtMapKit.setVisibleByName(controlLayer.eName, controlLayer.layerIsVisible == "1" ? true : false);
- } else if (controlLayer && controlLayer.layerType === LayerType.base) {
- jtMapKit.removeLayer(rasterLayerTitle, function() {
- if (obj.checked) {
- jtMapKit.addTileLayer({
- url: controlLayer.layerURL,
- title: rasterLayerTitle,
- });
- }
- }, function(err) {
- /* 说明要删除的图层不存在 */
- if (obj.checked) {
- jtMapKit.addTileLayer({
- url: controlLayer.layerURL,
- title: rasterLayerTitle,
- });
- }
- });
- }
- }
- /**
- * 图层标注控制
- * @param {Object} obj CheckBox控件
- * @param {string} layerName 图层名称
- */
- function LayerLabelControl(obj, layerName) {
- /* 获取当前控制的图层 */
- if (layerConfig) {
- let isVisible = undefined;
- for (let layer of layerConfig[0].layerList) {
- if (layer.eName === layerName) {
- layer.labelIsVisible = obj.checked ? "1" : "0";
- isVisible = layer.labelIsVisible;
- break; //退出循环
- }
- }
- if (isVisible) jtMapKit.setLabelVisibleByName(layerName, isVisible === '1' ? true : false);
- }
- /* 更新图层本地化 */
- saveStorage({
- key: layerKey,
- value: JSON.stringify(layerConfig),
- })
- }
- /**
- * 右侧弹出窗口并展示内容
- * @param {String} title 标题
- * @param {String} content 展示内容
- */
- function showRightResultWindow(title, content) {
- /* 如果已经弹出图层控制 则关闭显示 */
- if (mui('.mui-off-canvas-wrap').offCanvas().isShown()) {
- $("#divTitle").html(title);
- $("#divContent").html(content);
- } else {
- $("#divTitle").html(title);
- $("#divContent").html(content);
- /* 打印 */
- mui('.mui-off-canvas-wrap').offCanvas('show');
- }
- }
- /**
- * 展示查询结果
- * @param {Array[string,string]} Ids 查询要素集
- */
- function showQueryTaskResult(Ids) {
- queryCaseIds = [];
- for (let Id of Ids) {
- queryCaseIds.push(Id);
- }
- caseBase.queryDataByCaseId(queryCaseIds);
- }
- /**
- * 显示结果内容
- * @param {Object} result 结果信息
- */
- function showNormalResult(result) {
- $('.cr-result div').html(result);
- if ($('.cr-result').is(':hidden')) {
- $('.cr-result').slideDown(200, function() {});
- }
- }
- /**
- * 隐藏查询工具
- * @param {function} callback 隐藏后回调
- */
- function hideNormalResult(callback) {
- $('.cr-result').hide(function() {
- if (callback) callback();
- });
- }
- /**
- * 地图点击查询图层数据
- */
- function EventClick_Query_Point() {
- hideNormalResult();
- /* 查询的图层数组 */
- let queryLayers = [];
- for (let layer of layerConfig[0].layerList) {
- if (layer.isQuery == "1" && layer.layerIsVisible == '1') {
- queryLayers.push({
- id: layer.lyrIdx,
- fldName: layer.showField,
- eName: layer.eName,
- cName: layer.cName,
- isCase: layer.isCase === '1' ? true : false,
- });
- }
- }
- if (queryLayers.length == 0) {
- muiAlert("请开启显示需要查询的图层!");
- return;
- }
- muiToast("地图上单击,查询当前可视的地图数据!");
- jtMapKit.manyLayerQueryByPoint({
- url: mapQueryUrl,
- queryLayers: queryLayers,
- }, function(res) {
- showManyLayerQueryResult(res);
- }, function(err) {
- muiAlert(err, '提示');
- });
- }
- /**
- * 地图区域查询图层数据
- */
- function EventClick_Query_Polygon() {
- hideNormalResult();
- /* 查询的图层数组 */
- let queryLayers = [];
- for (let layer of layerConfig[0].layerList) {
- if (layer.isQuery == "1" && layer.layerIsVisible == '1') {
- queryLayers.push({
- id: layer.lyrIdx,
- fldName: layer.showField,
- eName: layer.eName,
- cName: layer.cName,
- isCase: layer.isCase === '1' ? true : false,
- });
- }
- }
- if (queryLayers.length == 0) {
- muiAlert("请开启需要查询的图层!");
- return;
- }
- muiToast("地图上单击绘制查询区域,单击查询按钮开始查询数据!");
- jtMapKit.manyLayerQueryByPolygon({
- url: mapQueryUrl,
- queryLayers: queryLayers,
- }, function(op) {
- createToolsBySketch('开始查询', 'manyLayerQuerySpatialData', {
- geometry: op.geometry,
- });
- }, function(res) {
- hideNormalResult();
- showManyLayerQueryResult(res);
- }, function(err) {
- hideNormalResult();
- muiAlert(err, '提示');
- });
- }
- /**
- * 通用占压分析
- */
- function EventClick_Common_Spatial_Analysis() {
- muiToast("地图上单击绘制分析区域,单击分析按钮进行占压分析!");
- jtMapKit.commonOccupyAnalysis(function(res) {
- createToolsBySketch('占压分析', 'commonSpatialAnalysis', {
- geometry: res,
- });
- })
- hideNormalResult();
- }
- /**
- * 开始根据绘制进行多图层查询
- * @param {JSON} options 参数项
- * options.queryLayers{array{JSON}}:可查询图层数组
- * options.url{string}:查询服务地址
- * options.geometry{JSON}:查询参考要素
- */
- function manyLayerQuerySpatialData(options) {
- if (options.geometry == undefined || options.geometry.rings[0].length <= 3) {
- muiAlert("绘制的区域不符合要求,请继续绘制");
- return;
- }
- jtMapKit.manyLayerQueryByPolygonComplete();
- }
- /**
- * 开始根据绘制区域进行空间占压分析
- * @param {JSON} options 参数项
- * options.geometry{string}:坐标串
- */
- function commonSpatialAnalysis(options) {
- let count = options.geometry.split(',').length;
- if (count < 8) {
- muiAlert("绘制的区域不符合要求,请继续绘制");
- return;
- }
- /* 隐藏窗口 */
- hideNormalResult();
- /* 锁定草图 */
- jtMapKit.sketchComplete();
- /* 查询配置表 */
- csaConfig = [];
- sendAjax({
- url: 'appQuerySpatialAnalysisConfig',
- data: {
- tabName: 'zdfx'
- },
- waitMessage: '初始化...',
- success: function(resData) {
- /* 装配配置表 */
- for (let item of resData[0].itemList) {
- csaConfig.push({
- tabEName: item.tabEName,
- tabCName: item.tabCName,
- fldName: item.fldEName,
- cntName: item.cntName,
- cntCName: item.cntCName,
- geoCoords: options.geometry,
- isDelete: '0',
- })
- }
- /* 执行分析 */
- if (csaConfig.length > 0) {
- csaConfig[0].isDelete = "1"; /* 设置删除原有数据标志 */
- _executeCSA(0);
- } else {
- muiAlertError("没有配置数据,请联系管理员!");
- }
- },
- error: function(err) {
- muiAlertError(err);
- }
- })
- }
- /* 通用占压分析配置表 */
- let csaConfig = [];
- /**
- * 执行通用占压分析
- * @param {int} index 配置索引
- */
- function _executeCSA(index) {
- if (index == csaConfig.length) {
- console.log("占压分析执行完成...");
- /* 清除已有数据 */
- csaDatas = [];
- /* 分析完成 开始查询结果数据 */
- // _queryCSAData(0);
- _queryCSACount();
- return;
- }
- sendAjax({
- url: 'appExecuteCommonSpatialAnalysis',
- data: csaConfig[index],
- waitMessage: '执行' + csaConfig[index].tabCName + "占压分析...",
- success: function(resData) {
- _executeCSA(index + 1);
- },
- error: function(err) {
- _executeCSA(index + 1);
- console.log(err);
- }
- })
- }
- /**
- * 查询占压分析统计结果
- */
- function _queryCSACount() {
- sendAjax({
- url: 'appQueryOccupyAnalysisCount',
- waitMessage: '查询中...',
- data: {},
- success: function(resData) {
- let csaCounts = [];
- for (let data of resData) {
- let items = [];
- for (let item of data.itemList) {
- items.push({
- selCode: item.selCode,
- selName: item.selName,
- selNumber: item.selNumber,
- })
- }
- csaCounts.push({
- tabName: data.tabName,
- fldName: data.fldName,
- items: items,
- });
- _showCSACountResult(csaCounts);
- }
- },
- error: function(err) {
- muiAlertError(err);
- }
- })
- }
- /**
- * 展示统计数据
- * @param {Array} datas 统计数据Array{JSON}
- */
- function _showCSACountResult(datas) {
- /* 初始化 加入根节点*/
- let divRoot = document.createElement('div');
- divRoot.className = 'jt-csa-count-result-panel';
- let rootHtml = "";
- /* 创建横向滚动tab */
- rootHtml +=
- "<div class='mui-scroll-wrapper mui-slider-indicator mui-segmented-control mui-segmented-control-inverted'>";
- rootHtml += "<div class='mui-scroll'>";
- for (let i = 0; i < datas.length; i++) {
- let data = datas[i];
- rootHtml += "<a href='#csa_count_" + i + "' class='mui-control-item";
- if (i === 0) {
- rootHtml += " mui-active";
- }
- rootHtml += "'>" + data.tabName + "</a>";
- }
- rootHtml += "</div>";
- rootHtml += "</div>";
- /* 创建统计信息详细内容 */
- rootHtml += "<div class='mui-content-padded'>";
- for (let i = 0; i < datas.length; i++) {
- let data = datas[i];
- rootHtml += "<div id='csa_count_" + i + "' class='mui-control-content";
- if (i === 0) {
- rootHtml += " mui-active";
- }
- rootHtml += "'>";
- /* 加入具体内容头 */
- rootHtml += "<div class='jt-row-head'>";
- rootHtml += "<span onclick='showDetails(this)'>" + data.fldName + "</span>";
- rootHtml += "<span>面积</span>";
- rootHtml += "</div>";
- /* 加入数据 */
- rootHtml += "<div class='jt-row-content'>";
- rootHtml += "<div class='mui-scroll-wrapper'>";
- rootHtml += "<div class='mui-scroll'>";
- for (let item of data.items) {
- rootHtml += "<div class='jt-row'>";
- rootHtml += "<span onclick='showDetails(this)'>" + item.selCode + "</span>";
- rootHtml += "<span onclick='showDetails(this)'>" + item.selName + "</span>";
- rootHtml += "</div>";
- }
- rootHtml += "</div>";
- rootHtml += "</div>";
- rootHtml += "</div>";
- rootHtml += "</div>";
- }
- rootHtml += "</div>";
- divRoot.innerHTML = rootHtml;
- /* 创建弹窗的标题头 */
- var header = document.createElement('header');
- header.className = 'mui-bar';
- let headHtml = "<div class='jt-cnt-bar'>";
- headHtml +=
- "<button type='button' class='app-icon app-iocn-details jt-cnt-bar-button' onclick='_queryCSAData(0)'>详细信息</button>";
- headHtml += "<span class='jt-cnt-bar-title'>占压分析统计</span>";
- headHtml += "</div>";
- header.innerHTML = headHtml;
- /* 显示信息 */
- _showMuiPopover(header, divRoot);
- }
- /**
- * 显示结果内容
- * @param {Object} domHeader 标题
- * @param {Object} domContent 内容
- * @param {boolean} isCase 多图层查询包含案件 调整弹出框高度
- */
- function _showMuiPopover(domHeader, domContent, isCase) {
- if (isCase && isCase === true) {
- $("#queryResultPopover").addClass('wc-popover-case-property');
- } else {
- $("#queryResultPopover").removeClass('wc-popover-case-property');
- }
- /* 清除原有显示内容 */
- $("#queryResultPopover").html('');
- /* 添加弹框显示内容 */
- $("#queryResultPopover").append(domHeader);
- $("#queryResultPopover").append(domContent);
- /* 显示弹框 */
- mui("#queryResultPopover").popover('show');
- /* 重置滚动容器 该方法是必须的 否则将导致滚动容器滚动失败 */
- mui('.mui-scroll-wrapper').scroll();
- /* 给标题添加事件 */
- domHeader.onclick = function() {
- mui("#queryResultPopover").popover('hide');
- };
- }
- /* 查询结果数据集 */
- let csaDatas = [];
- /**
- * 查询通用占地分析数据
- * @param {int} index 查询索引
- */
- function _queryCSAData(index) {
- if (index == csaConfig.length) {
- // _initCSAData(csaDatas);
- _initCSADetailData(csaDatas);
- return;
- }
- sendAjax({
- url: 'appQueryCommonSpatialAnalysis',
- data: {
- tabEName: csaConfig[index].tabEName,
- start: '1',
- count: '10',
- },
- waitMessage: '查询' + csaConfig[index].tabCName + "分析结果...",
- success: function(resData) {
- if (resData[0].dataCount > 0) {
- let items = [];
- for (let item of resData[0].dataList) {
- items.push(item);
- }
- csaDatas.push({
- config: {
- name: csaConfig[index].tabCName,
- isLast: resData[0].isLast,
- },
- queryParam: {
- tabEName: csaConfig[index].tabEName,
- start: '1',
- count: '10',
- },
- items: items,
- });
- }
- _queryCSAData(index + 1);
- },
- error: function(err) {
- _queryCSAData(index + 1);
- }
- })
- }
- /**
- * 展示通用占压分析明细数据
- * @param {Array} datas 明细数据Array{JSON}
- */
- function _initCSADetailData(datas) {
- /* 初始化 加入根节点*/
- let divRoot = document.createElement('div');
- divRoot.className = 'jt-csa-count-result-panel';
- let rootHtml = "";
- /* 创建横向滚动tab */
- rootHtml +=
- "<div class='mui-scroll-wrapper mui-slider-indicator mui-segmented-control mui-segmented-control-inverted'>";
- rootHtml += "<div class='mui-scroll'>";
- for (let i = 0; i < datas.length; i++) {
- let data = datas[i];
- rootHtml += "<a href='#item_count" + i + "' class='mui-control-item";
- if (i === 0) {
- rootHtml += " mui-active";
- }
- rootHtml += "'>" + data.config.name + "</a>";
- }
- rootHtml += "</div>";
- rootHtml += "</div>";
- /* 创建具体内容 */
- rootHtml += "<div class='mui-content-padded'>";
- for (let i = 0; i < datas.length; i++) {
- let data = datas[i];
- rootHtml += "<div id='item_count" + i + "' class='mui-control-content jt-mui-control-content";
- if (i === 0) {
- rootHtml += " mui-active";
- }
- rootHtml += "'>";
- rootHtml += "<div class='jt-row-content'>";
- rootHtml += "<div class='mui-scroll-wrapper'>";
- let panelId = 'panel' + i;
- rootHtml += "<div class='mui-scroll' id='" + panelId + "'>";
- rootHtml += _createCASDetailDataItem(data.items, panelId, data.config.isLast, data.queryParam);
- /* 以上是具体内容 */
- rootHtml += "</div>";
- rootHtml += "</div>";
- rootHtml += "</div>";
- rootHtml += "</div>";
- }
- rootHtml += "</div>";
- divRoot.innerHTML = rootHtml;
- /* 创建弹窗的标题头 */
- var header = document.createElement('header');
- header.className = 'mui-bar';
- let headHtml = "<div class='jt-cnt-bar'>";
- headHtml +=
- "<button type='button' class='app-icon app-iocn-details jt-cnt-bar-button' onclick='_queryCSACount()'>统计信息</button>";
- headHtml += "<span class='jt-cnt-bar-title'>占压分析明细</span>";
- headHtml += "</div>";
- header.innerHTML = headHtml;
- /* 显示弹框 */
- _showMuiPopover(header, divRoot);
- }
- /**
- * 根据数据项创建Html
- * @param {JSON} items 数据集
- * @param {string} domId 装载数据项的容器Id
- * @param {string} isLast 是否到达数据末尾
- * @param {JSON} queryParam 数据查询参数
- */
- function _createCASDetailDataItem(items, domId, isLast, queryParam) {
- let itemHtml = "";
- for (let j = 0; j < items.length; j++) {
- let item = items[j];
- if (j % 2 == 0) {
- itemHtml += "<div class='jt-feature-data-row jt-row-even-number'>";
- } else {
- itemHtml += "<div class='jt-feature-data-row jt-row-odd-number'>";
- }
- itemHtml += "<span>" + item.rowNumber + "</span>";
- itemHtml += "<span class='jt-nowrap' onclick='showDetails(this)'>" + item.showName + "</span>";
- itemHtml += "<span class='jt-nowrap' onclick='showDetails(this)'>" + item.feaArea + "亩</span>";
- itemHtml += "<button type='button' class='mui-btn app-icon app-icon-location jt-button'";
- itemHtml += " onclick = \"_queryFeatureWktAndLocation('" + item.oid +
- "','fx_common_spatial_analysis')\" />";
- itemHtml += "<button type='button' class='mui-btn app-icon app-iocn-details jt-button'";
- itemHtml += " onclick = \"openDetailsPage('" + item.tabEName + "','" + item.fId + "')\" />"
- itemHtml += "</div>";
- }
- /* 删除加载更多按钮 */
- let btnPanelId = domId + "_" + "lastDom";
- $("#" + btnPanelId).remove();
- /* 判断是否需要加载更多按钮 */
- if (isLast === '0') {
- itemHtml += "<div class='jt-csa-data-item-row' id='" + btnPanelId + "'>";
- itemHtml += "<button class='mui-btn mui-btn-block jt-btn-load'";
- itemHtml += " onclick=\"_loadManyCSAData('" + domId + "'," + JSON.stringify(queryParam).replace(/\"/g,
- "'") + ")\"/>";
- itemHtml += "加载更多";
- itemHtml += "</button>";
- itemHtml += "</div>"
- }
- return itemHtml;
- }
- /**
- * 查询要素并定位
- * @param {string} objId objectid
- * @param {string} tabName 数据表名称
- */
- function _queryFeatureWktAndLocation(objId, tabName) {
- var iData = {
- tabName: tabName,
- objId: objId,
- }
- sendAjax({
- type: 'post',
- url: "appQueryJSONCoordinates",
- waitMessage: '正在查询图形数据...',
- data: iData,
- success: function(resData) {
- let item = resData[0];
- if (item.type === 'Polygon' || item.type === 'MultiPolygon') {
- jtMapKit.appendPolygonToMap({
- type: item.type,
- coordinates: item.coordinates,
- })
- } else {
- muiAlertError('图形异常,请联系管理员!');
- }
- },
- error: function(err) {
- muiAlertError(err);
- }
- })
- }
- /**
- * @param {string} domId 数据装载容器Id
- * @param {JSON} queryParam 查询参数
- */
- function _loadManyCSAData(domId, queryParam) {
- queryParam.start = parseInt(queryParam.start) + parseInt(queryParam.count);
- sendAjax({
- url: 'appQueryCommonSpatialAnalysis',
- data: queryParam,
- waitMessage: '加载更多数据...',
- success: function(resData) {
- let itemHtml = _createCASDetailDataItem(resData[0].dataList, domId, resData[0].isLast,
- queryParam);
- $("#" + domId).html($("#" + domId).html() + itemHtml);
- },
- error: function(err) {
- muiAlertError(err);
- }
- })
- }
- /**
- * 控制通用占地分析数据项容器显示/隐藏
- * @param {Object} dom 点击事件的dom
- * @param {int} index 数据项容器索引
- */
- function _showCSADataItem(dom, index) {
- /* 指示器点击 */
- indicator(dom);
- /* 设置所有数据项容器默认隐藏 */
- $(".jt-csa-data-panel").each(function(index, element) {
- $(element).hide();
- });
- /* 显示当前数据项 */
- $($(".jt-csa-data-panel")[index]).show();
- /* 设置滚动条到最顶端 */
- mui('#csaScrollWrapper').scroll().scrollTo(0, 0, 100); //100毫秒滚动到顶
- }
- /* 多图层查询结果展示相关 */
- /**
- * 多图层查询结果展示
- * @param {JSON} datas
- */
- function showManyLayerQueryResult(datas, isInputQuery) {
- /* 案件要素 */
- let caseItems = undefined;
- /* 承载案件的容器 */
- let caseDomId = undefined;
- /* 可修改内容的容器Id */
- let caseHeadDomId = undefined;
- /* 初始化 加入根节点*/
- let divRoot = document.createElement('div');
- divRoot.className = 'jt-csa-count-result-panel';
- let rootHtml = "";
- /* 创建横向滚动tab */
- rootHtml +=
- "<div class='mui-scroll-wrapper mui-slider-indicator mui-segmented-control mui-segmented-control-inverted'>";
- rootHtml += "<div class='mui-scroll'>";
- for (let i = 0; i < datas.length; i++) {
- let data = datas[i];
- let topDomId = "top_item_" + i;
- rootHtml += "<a href='#item_count" + i + "' class='mui-control-item";
- if (i === 0) {
- if (datas.length === 1) {
- rootHtml += " jt-control-item mui-active";
- } else {
- rootHtml += " mui-active";
- }
- }
- rootHtml += "' id='" + topDomId + "'>" + data.cName + "</a>";
- if (data.isCase) {
- caseHeadDomId = topDomId;
- }
- }
- rootHtml += "</div>";
- rootHtml += "</div>";
- /* 创建具体内容 */
- rootHtml += "<div class='mui-content-padded'>";
- for (let i = 0; i < datas.length; i++) {
- let data = datas[i];
- rootHtml += "<div id='item_count" + i + "' class='mui-control-content jt-mui-control-content";
- if (i === 0) {
- rootHtml += " mui-active";
- }
- rootHtml += "'>";
- rootHtml += "<div class='jt-row-content'>";
- rootHtml += "<div class='mui-scroll-wrapper'>";
- let panelId = 'panel' + i;
- rootHtml += "<div class='mui-scroll' id='" + panelId + "'>";
- if (!data.isCase) {
- rootHtml += createManyLayerQueryItem(data.features);
- } else {
- caseDomId = panelId;
- if (!isInputQuery) {
- caseItems = data.features;
- } else {
- caseItems = data.caseId;
- }
- }
- /* 以上是具体内容 */
- rootHtml += "</div>";
- rootHtml += "</div>";
- rootHtml += "</div>";
- rootHtml += "</div>";
- }
- rootHtml += "</div>";
- divRoot.innerHTML = rootHtml;
- /* 创建弹窗的标题头 */
- /* 创建弹窗的标题头 */
- var header = document.createElement('header');
- header.className = 'mui-bar';
- header.innerHTML = '查询结果';
- /* 显示弹框 */
- _showMuiPopover(header, divRoot, true);
- /* 判断是否存案件 */
- if (caseDomId && caseItems && caseHeadDomId) {
- _manyLayerQueryCases(caseDomId, caseItems, caseHeadDomId);
- }
- }
- /* 记录案件展示轮播器当前位置及总数 */
- let caseSliderCurrentIndex = 0;
- let caseSliderItemCount = 0;
- let caseSliderQueryModel = undefined;
- let caseSliderContent = undefined;
- let caseSliderIsLast = false;
- /**
- * 装载案件
- * @param {String} domId 承载内容的容器Id
- * @param {Array} items 数据集
- * @param {String} domHeadId 子容器关联的标题头容器Id
- */
- function _manyLayerQueryCases(domId, items, domHeadId) {
- /* 初始化案件展示轮播器当前位置及项目总数 */
- caseSliderCurrentIndex = 0;
- caseSliderItemCount = 0;
- caseSliderIsLast = false;
- caseSliderQueryModel = undefined;
- caseSliderContent = undefined;
- /* 创建查询模型 */
- caseSliderQueryModel = {
- userID: mapByUser.userID,
- queryCount: '10',
- queryType: 'Input',
- startNum: '0',
- additionalConditions: '',
- }
- /* 重置标题头容器样式 */
- $("#" + domHeadId).addClass('jt-segmented-control-item');
- setCaseHeadContent(domHeadId, '案件图斑', undefined, undefined, false);
- if (Object.prototype.toString.call(items) === '[object Array]') {
- let caseIds = [];
- /* 加载案件Id */
- for (let item of items) {
- caseIds.push("'" + item.sValue + "'");
- }
- caseSliderQueryModel.additionalConditions = "ajh in (" + caseIds.toString() + ")";
- } else {
- caseSliderQueryModel.additionalConditions = "ajh like '%" + items + "%'";
- }
- /* 创建内容slider容器*/
- let divSlider = document.createElement('div');
- divSlider.className = 'mui-slider';
- /* 创建具体内容容器 */
- caseSliderContent = document.createElement('div');
- caseSliderContent.className = 'mui-slider-group'
- divSlider.append(caseSliderContent);
- /* 加入slider到容器中 */
- $("#" + domId).append(divSlider);
- /* 滑动组件滑动监听 */
- document.querySelector(".mui-slider").addEventListener('slide', function(event) {
- /* 记录当前滑动位置 */
- caseSliderCurrentIndex = event.detail.slideNumber;
- if (caseSliderCurrentIndex === caseSliderItemCount - 1 && !caseSliderIsLast) {
- setCaseHeadContent(domHeadId, '案件图斑', caseSliderCurrentIndex, caseSliderItemCount, true);
- } else {
- setCaseHeadContent(domHeadId, '案件图斑', caseSliderCurrentIndex, caseSliderItemCount, false);
- }
- });
- /* 加载数据 */
- _manyLayerQueryAndAppendItems(caseSliderQueryModel, caseSliderContent, function() {
- /* 初始化slider 这很重要 否则将无法滑动 定位到上次滑动结束位置*/
- mui('.mui-slider').slider().gotoItem(caseSliderCurrentIndex);
- setCaseHeadContent(domHeadId, '案件图斑', caseSliderCurrentIndex, caseSliderItemCount, false);
- });
- }
- /**
- * 设置显示内容
- * @param {String} domId 显示内容的容器Id
- * @param {String} title 标题
- * @param {Number} index 当前索引
- * @param {Number} count 总数
- * @param {boolean} isLoadMany 是否显示加载更多按钮
- */
- function setCaseHeadContent(domId, title, index, count, isLoadMany) {
- let divHtml = "<div class='jt-segmented-control-item-content'>";
- divHtml += "<span>" + title + "</span>";
- if (count) {
- divHtml += "<span class='jt-number'>" + (parseInt(index) + 1) + "/" + count + "</span>";
- }
- if (isLoadMany) {
- divHtml +=
- "<button class='app-icon app-iocn-details jt-cnt-bar-button' onclick=\"_caseSliderLoadMany('" + domId +
- "')\">加载更多</button>";
- }
- divHtml += "<div>";
- setHtmlByDomId(domId, divHtml);
- }
- /**
- * 加载更多
- * @param {String} domHeadId 显示内容的容器Id
- */
- function _caseSliderLoadMany(domHeadId) {
- caseSliderQueryModel.startNum = parseInt(caseSliderQueryModel.startNum) + parseInt(caseSliderQueryModel.queryCount);
- _manyLayerQueryAndAppendItems(caseSliderQueryModel, caseSliderContent, function() {
- /* 初始化slider 这很重要 否则将无法滑动 定位到上次滑动结束位置*/
- mui('.mui-slider').slider().gotoItem(caseSliderCurrentIndex);
- setCaseHeadContent(domHeadId, '案件图斑', caseSliderCurrentIndex, caseSliderItemCount, false);
- })
- }
- /**
- * @param {JSON} queryModel 查询模型
- * @param {Object} domSliderContent 加载具体内容的容器dom
- * @param {Function} callSuccess 成功回调callSuccess()
- */
- function _manyLayerQueryAndAppendItems(queryModel, domSliderContent, callSuccess) {
- /* 远程获取案件信息 */
- sendAjax({
- data: queryModel,
- url: 'appQueryCases',
- waitMessage: '案件装载中...',
- success: function(caseDatas) {
- /* 循环增加所有案件 */
- for (var i = 0; i < caseDatas.length; i++) {
- appendToSliderItemByCase(caseDatas[i], domSliderContent, false);
- /* 总数增加 */
- caseSliderItemCount++;
- }
- /* 判断是否已经到最后 */
- if (caseDatas.length < parseInt(queryModel.queryCount)) caseSliderIsLast = true;
- /* 回调告知已经加载完成 */
- if (callSuccess) callSuccess();
- },
- error: function(err) {
- muiAlertError(err);
- },
- });
- }
- /**
- * 创建多图层查询项目
- * @param {JSON} items 传递的数据
- */
- function createManyLayerQueryItem(items) {
- let itemHtml = "";
- for (let j = 0; j < items.length; j++) {
- let item = items[j];
- if (j % 2 == 0) {
- itemHtml += "<div class='jt-feature-data-row jt-row-even-number'>";
- } else {
- itemHtml += "<div class='jt-feature-data-row jt-row-odd-number'>";
- }
- itemHtml += "<span>" + (parseInt(j) + 1) + "</span>";
- itemHtml += "<span class='jt-nowrap' onclick='showDetails(this)'>" + item.sValue + "</span>";
- itemHtml += "<button type='button' class='mui-btn app-icon app-icon-location jt-button'";
- itemHtml += " onclick = \"_queryFeatureWktAndLocation('" + item.fId +
- "','" + item.tabName + "')\" />";
- itemHtml += "<button type='button' class='mui-btn app-icon app-iocn-details jt-button'";
- itemHtml += " onclick = \"openDetailsPage('" + item.tabName + "','" + item.fId + "')\" />"
- itemHtml += "</div>";
- }
- return itemHtml;
- }
- /**
- * 定位地图到指定区域
- * @param {string} xmin x最小值
- * @param {string} ymin y最小值
- * @param {string} xmax x最大值
- * @param {string} ymax y最大值
- */
- function mapToExtent(xmin, ymin, xmax, ymax) {
- let _xmin = parseFloat(xmin);
- let _ymin = parseFloat(ymin);
- let _xmax = parseFloat(xmax);
- let _ymax = parseFloat(ymax);
- jtMapKit.zoomToExtentNormal({
- xmin: _xmin,
- ymin: _ymin,
- xmax: _xmax,
- ymax: _ymax,
- })
- }
- /**
- * 打开详情页面
- * @param {string} tabName 表名称
- * @param {string} fldValue 值
- */
- function openDetailsPage(tabName, fldValue) {
- mui.openWindow({
- url: 'page-details.html',
- id: 'page-details.html',
- styles: {
- top: '0px',
- bottom: '0px',
- left: '0px',
- right: '0px',
- background: 'transparent',
- },
- show: {
- aniShow: 'slide-in-bottom',
- duration: '300',
- },
- extras: {
- tabName: tabName,
- fldValue: fldValue,
- }
- });
- }
- /* +++++++++++++++++++++通用选择图斑占地分析相关代码+++++++++++++++++++++ */
- /**
- * 弹窗展示内容
- * @param {string} title 标题
- * @param {string} html 展示内容 li的集合
- */
- function _showPopover(title, html) {
- /* 创建根据容器-滚动容器的父容器 */
- let divScrollWrapper = document.createElement('div');
- divScrollWrapper.className = 'mui-scroll-wrapper';
- /* 创建滚动子容器 */
- let divScroll = document.createElement('div');
- divScroll.className = 'mui-scroll';
- divScrollWrapper.append(divScroll);
- /* 加入数据项内容html */
- divScroll.innerHTML = html;
- /* 创建弹窗的标题头 */
- var header = document.createElement('header');
- header.className = 'mui-bar';
- header.innerHTML = title;
- /* 显示信息 */
- _showMuiPopover(header, divScrollWrapper);
- }
- /**
- * 选择要素空间占压分析
- */
- function EventClick_Select_Spatial_Analysis() {
- hideNormalResult();
- /* 查询的图层数组 */
- let queryLayers = [];
- for (let layer of layerConfig[0].layerList) {
- if (layer.isQuery === '1' && layer.layerIsVisible == '1') {
- queryLayers.push({
- fldName: layer.showField,
- eName: layer.eName,
- cName: layer.cName,
- });
- }
- }
- if (queryLayers.length == 0) {
- muiAlert("请开启需要进行占压分析的图层!");
- return;
- }
- muiToast("地图单击图斑进行分析!");
- selectFeatureExecuteAnalysis({
- queryLayers: queryLayers,
- });
- }
- /**
- * 选择要素进行分析
- * @param {JSON} options 配置项
- * @param {Array} options.queryLayers 分析的表JSON数组
- */
- function selectFeatureExecuteAnalysis(options) {
- if (options === undefined || options.queryLayers === undefined) {
- muiAlert('参数异常!', '警告');
- return;
- }
- jtMapKit.occupyAnalysis({
- url: mapQueryUrl,
- queryLayers: options.queryLayers,
- }, function(res) {
- showSelectOccypyFeatures(res);
- // console.log(JSON.stringify(res));
- }, function(err) {
- muiAlertError(err);
- });
- }
- /**
- * 展示选择的图元要素数据
- * @param {Array} data 选择的图元要素
- */
- function showSelectOccypyFeatures(data) {
- let resHtml = "";
- resHtml += "<div class='mui-card'>";
- resHtml += "<ul class='mui-table-view'>";
- for (let index in data) {
- let item = data[index];
- if (index % 2 === 0) {
- resHtml += "<li class='mui-table-view-cell jt-row-even-number mui-collapse'>";
- } else {
- resHtml += "<li class='mui-table-view-cell jt-row-odd-number mui-collapse'>";
- }
- /* 创建主项 */
- resHtml += "<a class='mui-navigate-right'><span>" + item.tabCName + "</span></a>";
- resHtml += "<div class='mui-collapse-content'>";
- /* 创建子项 */
- for (let feaIdx in item.features) {
- let feature = item.features[feaIdx];
- resHtml += "<div class='jt-csa-data-item-row'>";
- resHtml += "<span class='jt-number-icon'>" + (parseInt(feaIdx) + 1) + "</span>";
- resHtml += "<div class='jt-content jt-nowrap'>";
- resHtml += "<span class='jt-title jt-nowrap'>" + feature.showName + "</span>";
- resHtml += "</div>";
- resHtml += "<button type='button' class='mui-btn app-icon app-icon-location jt-button'";
- resHtml += " onclick = \"_queryFeatureWktAndLocation('" + feature.objId + "','" + feature.tabName +
- "')\" />"
- resHtml += "<button type='button' class='mui-btn app-icon app-icon-accupy-analysis jt-button'";
- resHtml += " onclick = \"_featureOccupyAnalysis('" + feature.tabName + "','" + feature.objId + "')\" />"
- resHtml += "</div>";
- }
- resHtml += "</div>";
- resHtml += "</li>";
- }
- resHtml += "</ul>";
- resHtml += "</div>";
- /* 展示结果 */
- _showPopover('进行占压分析', resHtml);
- }
- /**
- * 要素占压分析
- * @param {string} tabName 分析表名
- * @param {int} objId 要素唯一标识
- */
- function _featureOccupyAnalysis(tabName, objId) {
- /* 分析配置表 该表与通用占压分析通用 */
- csaConfig = [];
- sendAjax({
- url: 'appQuerySpatialAnalysisConfig',
- data: {
- tabName: tabName,
- },
- waitMessage: '初始化...',
- success: function(resData) {
- /* 装配配置表 */
- for (let item of resData[0].itemList) {
- csaConfig.push({
- tabEName: item.tabEName,
- tabCName: item.tabCName,
- fldName: item.fldEName,
- cntName: item.cntName,
- cntCName: item.cntCName,
- objId: objId,
- sName: tabName,
- isDelete: '0',
- })
- }
- /* 执行分析 */
- if (csaConfig.length > 0) {
- csaConfig[0].isDelete = "1"; /* 设置删除原有数据标志 */
- _executeFOA(0);
- } else {
- muiAlertError("没有配置数据,请联系管理员!");
- }
- },
- error: function(err) {
- muiAlertError(err);
- }
- })
- }
- /**
- * 执行选择要素占压分析
- * @param {int} index 配置索引
- */
- function _executeFOA(index) {
- if (index == csaConfig.length) {
- /* 清除已有数据 */
- csaDatas = [];
- /* 开始查询结果数据 */
- _queryCSACount();
- return;
- }
- sendAjax({
- url: 'appExecuteFeatureOccupyAnalysis',
- data: csaConfig[index],
- waitMessage: '执行' + csaConfig[index].tabCName + "占压分析...",
- success: function(resData) {
- _executeFOA(index + 1);
- },
- error: function(err) {
- _executeFOA(index + 1);
- }
- })
- }
|