map3d.html 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport"
  6. content="width=device-width,initial-scale=1.0,minimum-scale=0.1,maximum-scale=1.5,user-scalable=no" />
  7. <title>地图页面</title>
  8. <link href="../css/mui.min.css" rel="stylesheet" />
  9. <!-- 引入字体样式 -->
  10. <link rel="stylesheet" type="text/css" href="../fonts/TTTGB-Medium.css" />
  11. <link rel="stylesheet" type="text/css" href="../fonts/SansCN-Normal.css" />
  12. <!-- 引入自定义样式 -->
  13. <link rel="stylesheet" type="text/css" href="../css/app.css" />
  14. <!-- 引入案件样式 -->
  15. <link rel="stylesheet" type="text/css" href="../css/case.css" />
  16. <!-- 引入弹窗及选择器样式 -->
  17. <link rel="stylesheet" type="text/css" href="../css/mui.picker.css" />
  18. <link rel="stylesheet" type="text/css" href="../css/mui.poppicker.css" />
  19. <!-- 引入三维地图样式 -->
  20. <link rel="stylesheet" type="text/css" href="../js/Cesium/Widgets/widgets.css" />
  21. <!-- 引入地图页面独有样式 -->
  22. <link rel="stylesheet" type="text/css" href="../css/cr.map.css" />
  23. </head>
  24. <body>
  25. <header class="mui-bar cr-bar">
  26. <div class="mui-input-row mui-search">
  27. <input type="search" id="search" class="mui-input-clear" placeholder="输入案件编号 支持模糊查询">
  28. </div>
  29. </header>
  30. <!-- 三维地图容器 -->
  31. <div id="map3d" class="map3d"></div>
  32. <!-- 地图侧面工具 -->
  33. <div class="ui-content-padded" style="position: absolute;top: 70px;right: 4px;width: 40px;">
  34. <button class="mui-btn wc-map-div-btn" onclick="EventClick_Layer(this)">
  35. <span class="app-icon app-icon-map-layer"></span>
  36. </button>
  37. <button class="mui-btn wc-map-div-btn" onclick="EventClick_MeasureLength(this)">
  38. <span class="app-icon app-icon-map-measurelength"></span>
  39. </button>
  40. <button class="mui-btn wc-map-div-btn" onclick="EventClick_MeasureArea(this)">
  41. <span class="app-icon app-icon-map-measurearea"></span>
  42. </button>
  43. <button class="mui-btn wc-map-div-btn" onclick="EventClick_Location(this)">
  44. <span class="app-icon app-icon-map-location"></span>
  45. </button>
  46. <button class="mui-btn wc-map-div-btn" onclick="EventClick_AllView(this)">
  47. <span class="app-icon app-icon-map-querycoord"></span>
  48. </button>
  49. <button class="mui-btn wc-map-div-btn" onclick="EventClick_Query_Coords(this)">
  50. <span class="app-icon app-icon-map-coordquery"></span>
  51. </button>
  52. <button class="mui-btn wc-map-div-btn" onclick="EventClick_Query_Point(this)">
  53. <span class="app-icon app-icon-map-pointquery"></span>
  54. </button>
  55. <button class="mui-btn wc-map-div-btn" onclick="EventClick_Query_Area(this)">
  56. <span class="app-icon app-icon-map-areaquery"></span>
  57. </button>
  58. <!-- 清扫工具 -->
  59. <button class="mui-btn wc-map-div-btn wc-map-tools-hide" id="divClean" onclick="EventClick_Clean(this)">
  60. <span class="app-icon app-icon-map-clean"></span>
  61. </button>
  62. <!-- 窗口管理 -->
  63. <button class="mui-btn wc-map-div-btn wc-map-tools-hide" id="divWindow" onclick="EventClick_QueryWindow(this)">
  64. <span class="app-icon app-icon-map-window"></span>
  65. </button>
  66. </div>
  67. <!-- 图层控制弹出窗口 -->
  68. <div id="layerPopover" class="mui-popover">
  69. <div class="mui-scroll-wrapper">
  70. <div class="mui-scroll" id="divLayerList">
  71. </div>
  72. </div>
  73. </div>
  74. <!-- 查询结果弹出层 -->
  75. <div id="queryResultPopover" class="mui-popover mui-popover-action mui-popover-bottom wc-popover-case">
  76. <header id="queryResultTitle" class="mui-bar">查询结果</header>
  77. <div class="mui-slider" id="slider">
  78. <!-- mui-slider-loop 如果需要轮循播放需要添加-->
  79. <div id="caseQueryResult" class="mui-slider-group">
  80. </div>
  81. </div>
  82. </div>
  83. <!-- 底部地图信息窗口 -->
  84. <div id="divButtomInfo" class="divButtomInfo"></div>
  85. <!-- 气泡查询窗口 -->
  86. <div class="cr-popup" id="divCaseQueryWindow" location="" extent="">
  87. <div class="arrow">
  88. <em></em>
  89. </div>
  90. <button class="mui-btn mui-btn-primary mui-icon app-icon app-icon-map-areaquery wc-btn-case-query" onclick="EventClick_Case_Query(this)">开始查询</button>
  91. </div>
  92. </body>
  93. </html>
  94. <!-- 引入mui脚本 -->
  95. <script src="../js/mui.js"></script>
  96. <!-- 引入弹窗及选择器脚本 -->
  97. <script src="../js/mui.picker.js" type="text/javascript" charset="utf-8"></script>
  98. <script src="../js/mui.poppicker.js" type="text/javascript" charset="utf-8"></script>
  99. <!-- 引入webview脚本 -->
  100. <script src="../js/webview.js" type="text/javascript" charset="utf-8"></script>
  101. <!-- 引入jQuery脚本 -->
  102. <script src="../js/jquery.js" type="text/javascript" charset="utf-8"></script>
  103. <!-- 引入Cesium脚本 -->
  104. <script src="../js/Cesium/Cesium.js" type="text/javascript" charset="utf-8"></script>
  105. <!--引入通用脚本-->
  106. <script src="../js/common.js"></script>
  107. <!-- 引入存储脚本 -->
  108. <script src="../js/save.js" type="text/javascript" charset="utf-8"></script>
  109. <!-- 引入ajax脚本 -->
  110. <script src="../js/ajax.js" type="text/javascript" charset="utf-8"></script>
  111. <!--引入地图相关脚本-->
  112. <script src="../js/JTMap3D.js" type="text/javascript" charset="utf-8"></script>
  113. <script src="../js/MapManager3D.js" type="text/javascript" charset="utf-8"></script>
  114. <!-- 引入案件脚本 -->
  115. <script src="../js/case.js" type="text/javascript" charset="utf-8"></script>
  116. <script src="../js/case-list-base.js" type="text/javascript" charset="utf-8"></script>
  117. <!-- 本页专用脚本 -->
  118. <script type="text/javascript">
  119. /* 控件定义 */
  120. var domQueryResultTitle = document.getElementById("queryResultTitle");
  121. var domCaseQueryResult = document.getElementById("caseQueryResult");
  122. mui.init();
  123. /* 必须加 否则将导致数据表无法滚动 */
  124. mui('.mui-scroll-wrapper').scroll({
  125. scrollY: true, //是否竖向滚动
  126. scrollX: true, //是否横向滚动
  127. startX: 0, //初始化时滚动至x
  128. startY: 0, //初始化时滚动至y
  129. indicators: false, //是否显示滚动条
  130. deceleration: 0.0006, //阻尼系数,系数越小滑动越灵敏
  131. bounce: false, //是否启用回弹
  132. });
  133. /**
  134. * 全局公用变量
  135. */
  136. var queryCaseIds = [];
  137. /**
  138. * 覆盖页面出现显示方法
  139. */
  140. function pageFirstShow() {
  141. pageInit();
  142. printToConsole("3D地图页面显示!");
  143. /* 写入此方法是为了避免使用回退键返回 */
  144. mui.back = function() {}
  145. /* 获取存储的用户信息 */
  146. getSaveUserInfo({
  147. success: function(userInfo) {
  148. var joinUser = userInfo;
  149. //初始化案件实例
  150. caseBase = new JTCaseBase({
  151. queryType: "Input",
  152. ashxName: "appQueryCases",
  153. pageFlag: "Map",
  154. userInfo: joinUser,
  155. });
  156. //绑定数据表
  157. caseBase.bindUlTable(undefined);
  158. /**
  159. * 绑定搜索框 通过绑定监听获取输入的内容
  160. * @param {Object} value 获取输入的查询内容
  161. */
  162. caseBase.bindSearchControlEvent('search', function(value) {
  163. queryCaseIds.length = 0;
  164. queryCaseIds.push(value);
  165. caseBase.queryDataByCaseId(queryCaseIds);
  166. });
  167. /**
  168. * 绑定查询返回事件
  169. * @param {Array[JSON]} caseDatas
  170. */
  171. caseBase.eventQueryResult = function(caseDatas) {
  172. showCaseQueryResult(caseDatas);
  173. }
  174. /**
  175. * 绑定案件变更回调事件
  176. * @param {string} caseNum 案件编号
  177. */
  178. caseBase.eventCaseChange = function(caseNum){
  179. /* 调用刷新案件方法 */
  180. refreshDataTable(caseNum);
  181. }
  182. },
  183. error: function(err) {
  184. muiAlertError(err);
  185. }
  186. });
  187. }
  188. var sliderCaseDatas = undefined; //当前显示的案件结果集合
  189. var sliderMoveIndex = 0; //slider控件显示的索引
  190. /**
  191. * 添加查询案件到集合中
  192. * @param {Array[JSON]} caseDatas 查询案件数据集
  193. */
  194. function showCaseQueryResult(caseDatas) {
  195. sliderCaseDatas = caseDatas;
  196. sliderMoveIndex = 0;
  197. if(caseDatas.length == 0){
  198. /* 干掉原来显示的内容 */
  199. mui('#queryResultPopover').popover('hide');
  200. $("#caseQueryResult").empty();
  201. return;
  202. }
  203. /* 这个方法必须放到slider()前面,先显示弹出框,否则会导致slider().gotoItem()方法异常 */
  204. mui('#queryResultPopover').popover('show');
  205. /* 清除原有显示数据 */
  206. $("#caseQueryResult").empty();
  207. /* 增加最后一个 为了保证滑动正常*/
  208. // appendToSliderItemByCase(caseDatas[caseDatas.length - 1], domCaseQueryResult, true);
  209. /* 循环增加所有案件 */
  210. for (var i = 0; i < caseDatas.length; i++) {
  211. appendToSliderItemByCase(caseDatas[i], domCaseQueryResult, false);
  212. }
  213. /* 增加第一个 为了保证滑动正常*/
  214. // appendToSliderItemByCase(caseDatas[0], domCaseQueryResult, true);
  215. /* 赋值案件数量 用以显示 */
  216. queryCaseCount = caseDatas.length;
  217. /* 初始显示案件循环标题 */
  218. domQueryResultTitle.innerHTML = "当前案件 " + (sliderMoveIndex + 1) + "/" + queryCaseCount;
  219. /* 初始化slider 这很重要 否则将无法滑动*/
  220. mui('.mui-slider').slider().gotoItem(sliderMoveIndex);
  221. }
  222. /**
  223. * 向Slider的容器中追加案件
  224. * @param {JSON} caseJson 案件的JSON数据
  225. * @param {dom} domSlider Slider容器的dom对象
  226. * @param {dom} isLastOrFirst 是否属于第一个或者最后一个
  227. */
  228. function appendToSliderItemByCase(caseJson, domSlider, isLastOrFirst) {
  229. var div = caseBase.createCase(caseJson);
  230. var sliderDiv = document.createElement("div");
  231. sliderDiv.id = caseJson.casenum;
  232. if (isLastOrFirst) {
  233. sliderDiv.className = "mui-slider-item mui-slider-item-duplicate";
  234. } else {
  235. sliderDiv.className = "mui-slider-item";
  236. }
  237. sliderDiv.append(div);
  238. domSlider.append(sliderDiv);
  239. }
  240. /**
  241. * 关闭窗口
  242. */
  243. function closeWindow() {
  244. plus.webview.currentWebview().hide('slide-out-bottom', 300);
  245. }
  246. /* 查询的案件总数 */
  247. var queryCaseCount = 0;
  248. /* 滑动组件滑动监听 */
  249. document.querySelector(".mui-slider").addEventListener('slide', function(event) {
  250. /* 记录当前手工切换到哪一个了 以便在进行案件事物处理后 能正确切换到刚刚处理的案件 */
  251. domQueryResultTitle.innerHTML = "当前案件 " + (event.detail.slideNumber + 1) + "/" + queryCaseCount;
  252. })
  253. /**
  254. * 处理案件处置 处理、审核、派发、撤派 等操作成功后的后续处理事宜
  255. * @param {string} casenum 处置的案件编号
  256. */
  257. function refreshDataTable(casenum) {
  258. /* 重新查询 */
  259. caseBase.queryCaseByCasenum(casenum, function(caseJson) {
  260. /* 不能使用替换方法 导致mui-slder无法滑动 原因未知 */
  261. /* 寻找原来案件元素的位置 */
  262. for (var i = 0; i < sliderCaseDatas.length; i++) {
  263. if (sliderCaseDatas[i].casenum === caseJson.casenum) {
  264. //找到了 记录下来
  265. sliderMoveIndex = i;
  266. break;
  267. }
  268. }
  269. /* 替换元素 */
  270. sliderCaseDatas.splice(sliderMoveIndex, 1, caseJson);
  271. /* 先关闭弹出框 */
  272. mui('#queryResultPopover').popover('toggle');
  273. /* 重置内容 */
  274. showCaseQueryResult(sliderCaseDatas);
  275. });
  276. }
  277. </script>