map.html 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport"
  6. content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
  7. <title>地图页面</title>
  8. <link href="../css/mui.min.css" rel="stylesheet" />
  9. <!-- 引入自定义样式 -->
  10. <link rel="stylesheet" type="text/css" href="../css/app.css" />
  11. <!--ArcGIS地图相关-->
  12. <!-- <link rel="stylesheet" href="http://218.59.194.74:8088/arcgis/4.13/esri/themes/light/main.css" />
  13. <script src="http://218.59.194.74:8088/arcgis/4.13/init.js"></script> -->
  14. <link rel="stylesheet" href="https://js.arcgis.com/4.21/esri/themes/light/main.css">
  15. <!-- 引入案件样式 -->
  16. <link rel="stylesheet" type="text/css" href="../css/case.css" />
  17. <!-- 引入弹窗及选择器样式 -->
  18. <link rel="stylesheet" type="text/css" href="../css/mui.picker.css" />
  19. <link rel="stylesheet" type="text/css" href="../css/mui.poppicker.css" />
  20. <!-- 引入地图页面独有样式 -->
  21. <link rel="stylesheet" type="text/css" href="../css/cr.map.css"/>
  22. </head>
  23. <body>
  24. <!-- 具备侧滑功能 根容器 -->
  25. <!-- <div id="offCanvasWrapper" class="mui-off-canvas-wrap mui-scalable">
  26. <aside class="mui-off-canvas-right">
  27. <div class="mui-scroll-wrapper">
  28. <div class="mui-scroll">你好,我是侧滑菜单测试</div>
  29. </div>
  30. </aside>
  31. <div class="mui-inner-wrap">
  32. </div>
  33. </div> -->
  34. <header class="mui-bar cr-bar">
  35. <div class="mui-input-row mui-search">
  36. <input type="search" id="search" class="mui-input-clear" placeholder="输入案件编号 支持模糊查询">
  37. </div>
  38. </header>
  39. <div id="MainMap" style="height:100%;width: 100%;position: relative;"></div>
  40. <div class="ui-content-padded" style="position: absolute;top: 60px;right: 4px;width: 40px;">
  41. <!-- 图层控制 -->
  42. <button class="mui-btn wc-map-div-btn" id="divLayerControl" onclick="EventClick_Layer(this)">
  43. <span class="app-icon app-icon-map-layer"></span>
  44. </button>
  45. <!-- 切换影像图 -->
  46. <button class="mui-btn wc-map-div-btn" id="divShowRaster" onclick="EventClick_ShowRaster()">
  47. <span class="app-icon app-icon-map-raster"></span>
  48. </button>
  49. <!-- 切换为标准底图 -->
  50. <button class="mui-btn wc-map-div-btn" id="divShowVector" onclick="EventClick_ShowVector()">
  51. <span class="app-icon app-icon-map-vector"></span>
  52. </button>
  53. <!-- 测量长度 -->
  54. <button class="mui-btn wc-map-div-btn" id="divMeasureLength" onclick="EventClick_MeasureLength()">
  55. <span class="app-icon app-icon-map-measurelength"></span>
  56. </button>
  57. <!-- 测量面积 -->
  58. <button class="mui-btn wc-map-div-btn" id="divMeasureArea" onclick="EventClick_MeasureArea()">
  59. <span class="app-icon app-icon-map-measurearea"></span>
  60. </button>
  61. <!-- GPS定位 -->
  62. <button class="mui-btn wc-map-div-btn wc-map-tools-hide" id="divLocation" onclick="EventClick_Location()">
  63. <span class="app-icon app-icon-map-location"></span>
  64. </button>
  65. <!-- 地图初始化 -->
  66. <button class="mui-btn wc-map-div-btn wc-map-tools-hide" id="divMapInit" onclick="EventClick_MapInit()">
  67. <span class="app-icon app-icon-map-initlocation"></span>
  68. </button>
  69. <!-- 坐标查询 -->
  70. <button class="mui-btn wc-map-div-btn wc-map-tools-hide" id="divQueryCoord" onclick="EventClick_QueryCoord()">
  71. <span class="app-icon app-icon-map-querycoord"></span>
  72. </button>
  73. <!-- 坐标查询 -->
  74. <button class="mui-btn wc-map-div-btn wc-map-tools-hide" id="divCoordQuery" onclick="EventClick_CoordQuery()">
  75. <span class="app-icon app-icon-map-coordquery"></span>
  76. </button>
  77. <!-- 点查询 -->
  78. <button class="mui-btn wc-map-div-btn wc-map-tools-hide" id="divPointQuery" onclick="EventClick_PointQuery()">
  79. <span class="app-icon app-icon-map-pointquery"></span>
  80. </button>
  81. <!-- 区域查询 -->
  82. <button class="mui-btn wc-map-div-btn wc-map-tools-hide" id="divAreaQuery" onclick="EventClick_AreaQuery()">
  83. <span class="app-icon app-icon-map-areaquery"></span>
  84. </button>
  85. <!-- 窗口管理 -->
  86. <button class="mui-btn wc-map-div-btn wc-map-tools-hide" id="divWindow" onclick="EventClick_QueryWindow()">
  87. <span class="app-icon app-icon-map-window"></span>
  88. </button>
  89. <!-- 清扫工具 -->
  90. <button class="mui-btn wc-map-div-btn wc-map-tools-hide" id="divClean" onclick="EventClick_Clean()">
  91. <span class="app-icon app-icon-map-clean"></span>
  92. </button>
  93. <!-- 分屏对比 -->
  94. <button class="mui-btn wc-map-div-btn wc-map-tools-hide" id="divScreen" onclick="EventClick_SplitScreen()">
  95. <span class="app-icon app-icon-map-screen"></span>
  96. </button>
  97. </div>
  98. <!-- 图层控制弹出窗口 -->
  99. <div id="layerPopover" class="mui-popover">
  100. <div class="mui-scroll-wrapper">
  101. <div class="mui-scroll">
  102. <h5>业务图层</h5>
  103. <form id="tabLayerYW" class="mui-input-group"></form>
  104. <h5>影像图层</h5>
  105. <form id="tabLayerYX" class="mui-input-group"></form>
  106. </div>
  107. </div>
  108. </div>
  109. <!-- 查询结果弹出层 -->
  110. <div id="queryResultPopover" class="mui-popover mui-popover-action mui-popover-bottom wc-popover-case">
  111. <header id="queryResultTitle" class="mui-bar">查询结果</header>
  112. <div class="mui-slider" id="slider">
  113. <!-- mui-slider-loop 如果需要轮循播放需要添加-->
  114. <div id="caseQueryResult" class="mui-slider-group">
  115. </div>
  116. </div>
  117. </div>
  118. <!-- 坐标输入定位弹出层 -->
  119. <div id="popoverCoordLocation" class="mui-popover mui-popover-action mui-popover-bottom wc-popover-coord-input">
  120. <header class="mui-bar">输入坐标进行查询定位</header>
  121. <div style="margin-top: 50px;">
  122. <div class="mui-row wc-row wc-input-row">
  123. <span class="app-icon app-icon-nomarl-location"></span><span>经度</span>
  124. <div class="mui-input-row">
  125. <input id="iLongitude" type="text" class="mui-input-clear mui-input f-color"
  126. placeholder="输入经度118.2345">
  127. </div>
  128. </div>
  129. <div class="mui-row wc-row wc-input-row">
  130. <span class="app-icon app-icon-nomarl-location"></span><span>纬度</span>
  131. <div class="mui-input-row">
  132. <input id="iLatitude" type="text" class="mui-input-clear mui-input f-color"
  133. placeholder="输入纬度38.0213">
  134. </div>
  135. </div>
  136. <div class="mui-row wc-row" style="justify-content: flex-end;">
  137. <button type="button" class="mui-btn mui-btn-primary wc-btn-location"
  138. onclick="EventClick_InputLocation()">定位</button>
  139. </div>
  140. </div>
  141. </div>
  142. </body>
  143. </html>
  144. <!-- 引入mui脚本 -->
  145. <script src="../js/mui.js" type="text/javascript" charset="utf-8"></script>
  146. <!-- 引入弹窗及选择器脚本 -->
  147. <script src="../js/mui.picker.js" type="text/javascript" charset="utf-8"></script>
  148. <script src="../js/mui.poppicker.js" type="text/javascript" charset="utf-8"></script>
  149. <!-- 引入ArcGIS脚本 -->
  150. <script src="https://js.arcgis.com/4.21/"></script>
  151. <!-- 引入jQuery脚本 -->
  152. <script src="../js/jquery.js" type="text/javascript" charset="utf-8"></script>
  153. <!--引入通用脚本-->
  154. <script src="../js/common.js"></script>
  155. <!-- 引入存储脚本 -->
  156. <script src="../js/save.js" type="text/javascript" charset="utf-8"></script>
  157. <!-- 引入案件脚本 -->
  158. <script src="../js/case.js" type="text/javascript" charset="utf-8"></script>
  159. <!-- 进入ajax脚本 -->
  160. <script src="../js/ajax.js" type="text/javascript" charset="utf-8"></script>
  161. <!--引入地图相关脚本-->
  162. <script src="../js/JTMapKit.js"></script>
  163. <script src="../js/MapManager.js"></script>
  164. <!-- 引入案件基础脚本 -->
  165. <script src="../js/case-list-base.js" type="text/javascript" charset="utf-8"></script>
  166. <!-- 引入webview脚本 -->
  167. <script src="../js/webview.js" type="text/javascript" charset="utf-8"></script>
  168. <!-- 本页专用脚本 -->
  169. <script type="text/javascript">
  170. /* 控件定义 */
  171. var domTableYX = document.getElementById("tabLayerYX");
  172. var domTableYW = document.getElementById("tabLayerYW");
  173. var domQueryResultTitle = document.getElementById("queryResultTitle");
  174. var domCaseQueryResult = document.getElementById("caseQueryResult");
  175. mui.init();
  176. /* 必须加 否则将导致数据表无法滚动 */
  177. mui('.mui-scroll-wrapper').scroll({
  178. scrollY: true, //是否竖向滚动
  179. scrollX: true, //是否横向滚动
  180. startX: 0, //初始化时滚动至x
  181. startY: 0, //初始化时滚动至y
  182. indicators: false, //是否显示滚动条
  183. deceleration: 0.0006, //阻尼系数,系数越小滑动越灵敏
  184. bounce: false, //是否启用回弹
  185. });
  186. /**
  187. * 全局公用变量
  188. */
  189. var queryCaseIds = [];
  190. /**
  191. * plus初始化方法
  192. */
  193. plusInit(function() {
  194. })
  195. /**
  196. * 覆盖页面出现显示方法
  197. */
  198. function pageFirstShow() {
  199. /* 根据获取参数判断是定位还是普通 */
  200. var self = plus.webview.currentWebview();
  201. if (self.location != undefined) {
  202. $('.mui-bar').hide();
  203. $('.wc-map-tools-hide').hide();
  204. $('.ui-content-padded').css('top', '10px');
  205. /* 给导航栏加上按钮 */
  206. var navStyle = self.getStyle();
  207. plusInitAndroid(function(){
  208. self.setStyle(navStyle);
  209. })
  210. /* 设置地图容器的高度 -44是为了减掉导航栏的高度 */
  211. $("#MainMap").height(navStyle.height - 64);
  212. }
  213. setTimeout(function() {
  214. /* 地图查询初始化 */
  215. MapQueryConfigInit();
  216. MapInit("MainMap", self.location);
  217. }, 200);
  218. }
  219. /**
  220. * 查询初始化
  221. */
  222. function MapQueryConfigInit() {
  223. printToConsole("地图页面显示!");
  224. /* 写入此方法是为了避免使用回退键返回 */
  225. mui.back = function() {}
  226. // MapInit("MainMap", undefined);
  227. /* 获取存储的用户信息 */
  228. getSaveUserInfo({
  229. success: function(userInfo) {
  230. var joinUser = userInfo;
  231. printToConsole("caseBase = " + caseBase);
  232. //初始化案件实例
  233. caseBase = new JTCaseBase({
  234. queryType: "Input",
  235. ashxName: "appQueryCases",
  236. pageFlag: "Map",
  237. userInfo: joinUser,
  238. });
  239. //绑定数据表
  240. caseBase.bindUlTable(undefined);
  241. /**
  242. * 绑定搜索框 通过绑定监听获取输入的内容
  243. * @param {Object} value 获取输入的查询内容
  244. */
  245. caseBase.bindSearchControlEvent('search', function(value) {
  246. queryCaseIds.length = 0;
  247. queryCaseIds.push(value);
  248. caseBase.queryDataByCaseId(queryCaseIds);
  249. });
  250. /**
  251. * 绑定查询返回事件
  252. * @param {Array[JSON]} caseDatas
  253. */
  254. caseBase.eventQueryResult = function(caseDatas) {
  255. showCaseQueryResult(caseDatas);
  256. }
  257. /**
  258. * 绑定案件变更回调事件
  259. * @param {string} caseNum 案件编号
  260. */
  261. caseBase.eventCaseChange = function(caseNum){
  262. /* 调用刷新案件方法 */
  263. refreshDataTable(caseNum);
  264. }
  265. },
  266. error: function(err) {
  267. muiAlertError(err);
  268. }
  269. });
  270. }
  271. var sliderCaseDatas = undefined; //当前显示的案件结果集合
  272. var sliderMoveIndex = 0; //slider控件显示的索引
  273. /**
  274. * 添加查询案件到集合中
  275. * @param {Array[JSON]} caseDatas 查询案件数据集
  276. */
  277. function showCaseQueryResult(caseDatas) {
  278. sliderCaseDatas = caseDatas;
  279. sliderMoveIndex = 0;
  280. if(caseDatas.length == 0){
  281. /* 干掉原来显示的内容 */
  282. mui('#queryResultPopover').popover('hide');
  283. $("#caseQueryResult").empty();
  284. return;
  285. }
  286. /* 这个方法必须放到slider()前面,先显示弹出框,否则会导致slider().gotoItem()方法异常 */
  287. mui('#queryResultPopover').popover('show');
  288. /* 清除原有显示数据 */
  289. $("#caseQueryResult").empty();
  290. /* 增加最后一个 为了保证滑动正常*/
  291. // appendToSliderItemByCase(caseDatas[caseDatas.length - 1], domCaseQueryResult, true);
  292. /* 循环增加所有案件 */
  293. for (var i = 0; i < caseDatas.length; i++) {
  294. appendToSliderItemByCase(caseDatas[i], domCaseQueryResult, false);
  295. }
  296. /* 增加第一个 为了保证滑动正常*/
  297. // appendToSliderItemByCase(caseDatas[0], domCaseQueryResult, true);
  298. /* 赋值案件数量 用以显示 */
  299. queryCaseCount = caseDatas.length;
  300. /* 初始显示案件循环标题 */
  301. domQueryResultTitle.innerHTML = "当前案件 " + (sliderMoveIndex + 1) + "/" + queryCaseCount;
  302. /* 初始化slider 这很重要 否则将无法滑动*/
  303. mui('.mui-slider').slider().gotoItem(sliderMoveIndex);
  304. }
  305. /**
  306. * 向Slider的容器中追加案件
  307. * @param {JSON} caseJson 案件的JSON数据
  308. * @param {dom} domSlider Slider容器的dom对象
  309. * @param {dom} isLastOrFirst 是否属于第一个或者最后一个
  310. */
  311. function appendToSliderItemByCase(caseJson, domSlider, isLastOrFirst) {
  312. var div = caseBase.createCase(caseJson);
  313. var sliderDiv = document.createElement("div");
  314. sliderDiv.id = caseJson.casenum;
  315. if (isLastOrFirst) {
  316. sliderDiv.className = "mui-slider-item mui-slider-item-duplicate";
  317. } else {
  318. sliderDiv.className = "mui-slider-item";
  319. }
  320. sliderDiv.append(div);
  321. domSlider.append(sliderDiv);
  322. }
  323. /**
  324. * 关闭窗口
  325. */
  326. function closeWindow() {
  327. plus.webview.currentWebview().hide('slide-out-bottom', 300);
  328. }
  329. /* 查询的案件总数 */
  330. var queryCaseCount = 0;
  331. /* 滑动组件滑动监听 */
  332. document.querySelector(".mui-slider").addEventListener('slide', function(event) {
  333. /* 记录当前手工切换到哪一个了 以便在进行案件事物处理后 能正确切换到刚刚处理的案件 */
  334. domQueryResultTitle.innerHTML = "当前案件 " + (event.detail.slideNumber + 1) + "/" + queryCaseCount;
  335. })
  336. /**
  337. * 处理案件处置 处理、审核、派发、撤派 等操作成功后的后续处理事宜
  338. * @param {string} casenum 处置的案件编号
  339. */
  340. function refreshDataTable(casenum) {
  341. /* 重新查询 */
  342. caseBase.queryCaseByCasenum(casenum, function(caseJson) {
  343. /* 不能使用替换方法 导致mui-slder无法滑动 原因未知 */
  344. /* 寻找原来案件元素的位置 */
  345. for (var i = 0; i < sliderCaseDatas.length; i++) {
  346. if (sliderCaseDatas[i].casenum === caseJson.casenum) {
  347. //找到了 记录下来
  348. sliderMoveIndex = i;
  349. break;
  350. }
  351. }
  352. /* 替换元素 */
  353. sliderCaseDatas.splice(sliderMoveIndex, 1, caseJson);
  354. /* 先关闭弹出框 */
  355. mui('#queryResultPopover').popover('toggle');
  356. /* 重置内容 */
  357. showCaseQueryResult(sliderCaseDatas);
  358. });
  359. }
  360. </script>