map3d.html 11 KB

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