GisShareApp3D1.html 49 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no">
  6. <title>上海城地API</title>
  7. <style>
  8. html,
  9. body,
  10. #mapDiv {
  11. padding: 0;
  12. margin: 0;
  13. height: 100%;
  14. width: 100%;
  15. }
  16. /*自定义窗口样式*/
  17. .leaflet-popup-content-wrapper{
  18. background-color: rgba(0,0,0,0.8) !important;
  19. color:white !important;
  20. }
  21. .leaflet-popup-tip{
  22. background-color: rgba(0,0,0,0.8) !important;
  23. }
  24. .esri-view-surface--inset-outline:focus::after {
  25. outline: none !important;
  26. }
  27. </style>
  28. <script src="js/echarts.min.js"></script>
  29. <script src="jquery/jquery-2.2.3.min.js"></script>
  30. <script type="text/javascript" src="jquery/xml2json.js"></script>
  31. <script>
  32. var dojoConfig = {
  33. async: true,
  34. parseOnLoad: true,
  35. packages: [{
  36. name: "lib",
  37. location: location.pathname.replace(/\/[^/]+$/, "") + "/lib"
  38. }]
  39. };
  40. </script>
  41. <script src="Common/mapClass/corrugatedPoint/gl-matrix.js"></script>
  42. <!--<script src="http://172.16.28.83/arcgis_api/library/4.17/init.js"></script>-->
  43. <!--<link rel="stylesheet" href="http://172.16.28.83/arcgis_js_api/library/4.17/esri/themes/light/main.css">-->
  44. <script src="https://10.101.35.50/arcgis_js_api/library/4.17/init.js"></script>
  45. <link rel="stylesheet" href="https://10.101.35.50/arcgis_js_api/library/4.17/esri/themes/light/main.css">
  46. <link rel="stylesheet" href="css/echartsLayerCss.css">
  47. <!--系统自定义JS-->
  48. <script src="Common/dataClass/XMLUtil.js"></script> <!--XML操作功能-->
  49. <script src="Common/dataClass/ConfigManagertest1.js"></script>
  50. <script src="Common/dataClass/DataCommonClass.js"></script>
  51. <script src="Common/dataClass/MD5.js"></script>
  52. <script src="Common/dataClass/Base64.js"></script>
  53. <script src="Common/mapClass/MapClass4.js"></script>
  54. <script src="Common/WsCommonClass.js"></script>
  55. <script src="Common/mapClass/GSFunction.js"></script>
  56. <script src="Common/mapClass/corrugatedPoint/corrugatedPoint.js"></script>
  57. <script>
  58. //监听message
  59. window.onmessage = function(e) {
  60. //alert(e.origin);
  61. //if (e.origin !== 'http://10.101.35.46/WJGisShare/')
  62. //return;
  63. var payload;
  64. try{
  65. payload= JSON.parse(e.data);
  66. }
  67. catch(e){
  68. return;
  69. }
  70. switch (payload.method) {
  71. case 'ZoomIn':
  72. //localStorage.setItem(payload.key, JSON.stringify(payload.data));
  73. ZoomIn(payload.data);
  74. break;
  75. case 'ZoomOut':
  76. ZoomOut(payload.data);
  77. break;
  78. case 'Clear':
  79. Clear(payload.data);
  80. break;
  81. case 'ViewChange':
  82. ViewChange();
  83. break;
  84. case 'fullExtent':
  85. toFullExtent();
  86. break;
  87. case 'doSetExtent':
  88. doSetExtent(parseInt(payload.data));
  89. break;
  90. case 'measureSquare':
  91. measureSquare();
  92. break;
  93. case 'measureLength':
  94. measureLength();
  95. break;
  96. case 'downLoadPicture':
  97. downLoadPicture();
  98. break;
  99. case 'doGetGraphicByJson':
  100. doGetGraphicByJson(payload.data[0],payload.data[1]);
  101. break;
  102. case 'drawSquare':
  103. drawSquare();
  104. break;
  105. case 'query':
  106. query(payload.data[0],payload.data[1]);
  107. break;
  108. case 'queryByWhereStr':
  109. querybyWhereStr(payload.data[0],payload.data[1]);
  110. break;
  111. case 'openFeatureLayer':
  112. OpenFeatureLayerByID(payload.data[0],payload.data[1]);
  113. break;
  114. case 'openFeatureLayerByName':
  115. // var isVisible=true;
  116. // if(parseInt(payload.data[1])==0)
  117. // {
  118. // isVisible=false;
  119. // }
  120. OpenMapImageLayerByName(payload.data[0],payload.data[1],payload.data[2]);
  121. break;
  122. case "CloseChangeLayer":{
  123. closeMapImageLayerByName();
  124. break;
  125. }
  126. case 'openFeatureLayer0':
  127. var isVisible=true;
  128. if(parseInt(payload.data[0])==0)
  129. {
  130. isVisible=false;
  131. }
  132. OpenFeatureLayerByID1(0,isVisible);
  133. break;
  134. case 'openFeatureLayer1':
  135. var isVisible=true;
  136. if(parseInt(payload.data[0])==0)
  137. {
  138. isVisible=false;
  139. }
  140. OpenFeatureLayerByID1(1,isVisible);
  141. break;
  142. case 'openFeatureLayer2':
  143. var isVisible=true;
  144. if(parseInt(payload.data[0])==0)
  145. {
  146. isVisible=false;
  147. }
  148. OpenFeatureLayerByID1(2,isVisible);
  149. break;
  150. case 'openFeatureLayer3':
  151. var isVisible=true;
  152. if(parseInt(payload.data[0])==0)
  153. {
  154. isVisible=false;
  155. }
  156. OpenFeatureLayerByID1(3,isVisible);
  157. break;
  158. case 'openFeatureLayer4':
  159. var isVisible=true;
  160. if(parseInt(payload.data[0])==0)
  161. {
  162. isVisible=false;
  163. }
  164. OpenFeatureLayerByID1(4,isVisible);
  165. break;
  166. case 'openFeatureLayer5':
  167. var isVisible=true;
  168. if(parseInt(payload.data[0])==0)
  169. {
  170. isVisible=false;
  171. }
  172. OpenFeatureLayerByID1(5,isVisible);
  173. break;
  174. case 'openFeatureLayer6':
  175. var isVisible=true;
  176. if(parseInt(payload.data[0])==0)
  177. {
  178. isVisible=false;
  179. }
  180. OpenFeatureLayerByID1(6,isVisible);
  181. break;
  182. case 'openFeatureLayer7':
  183. var isVisible=true;
  184. if(parseInt(payload.data[0])==0)
  185. {
  186. isVisible=false;
  187. }
  188. OpenFeatureLayerByID1(7,isVisible);
  189. break;
  190. case 'openFeatureLayer8':
  191. var isVisible=true;
  192. if(parseInt(payload.data[0])==0)
  193. {
  194. isVisible=false;
  195. }
  196. OpenFeatureLayerByID1(8,isVisible);
  197. break;
  198. case 'openFeatureLayer9':
  199. var isVisible=true;
  200. if(parseInt(payload.data[0])==0)
  201. {
  202. isVisible=false;
  203. }
  204. OpenFeatureLayerByID1(9,isVisible);
  205. break;
  206. case 'openFeatureLayer10':
  207. var isVisible=true;
  208. if(parseInt(payload.data[0])==0)
  209. {
  210. isVisible=false;
  211. }
  212. OpenFeatureLayerByID1(10,isVisible);
  213. break;
  214. case 'setCenterExtent':
  215. setCenterExtent(payload.data[0],payload.data[1],payload.data[2]);
  216. break;
  217. case 'drawCircle':{
  218. drawCircle(payload.data[0]);
  219. break;
  220. }
  221. case 'queryByCircle':{
  222. queryByCircle(payload.data[0] ,payload.data[1] ,payload.data[2] ,payload.data[3] )
  223. break;
  224. }
  225. case 'doFlashStatus':{
  226. var flahLayerName=payload.data[0];
  227. switch(flahLayerName)
  228. {
  229. case "违章建筑":
  230. flashLayerStatus(fe0,"状态",1);
  231. break;
  232. case "电梯":
  233. flashLayerStatus(fe4,"状态",1);
  234. break;
  235. case "虹口烟感":
  236. flashLayerStatus(fe1,"状态",1);
  237. break;
  238. case "摄像头":
  239. flashLayerStatus(fe2,"状态",1);
  240. break;
  241. case "危险源":
  242. flashLayerStatus(fe3,"状态",1);
  243. break;
  244. case "门磁":
  245. flashLayerStatus(fe5,"状态",1);
  246. break;
  247. default:
  248. ClearLightLayerStatus();
  249. break;
  250. }
  251. break;
  252. }
  253. case "onLocation":{
  254. setPointBylonlat(payload.data[0],payload.data[1],payload.data[2],payload.data[3],payload.data[4],payload.data[5] ,payload.data[6]);
  255. break;
  256. }
  257. case "MeasureLengthByPoint":{
  258. //parent.eval(payload.backfun+"()");
  259. MeasureLengthByPoint(payload.data[0],payload.data[1],payload.data[2],payload.data[3],payload.backfun);
  260. break;
  261. }
  262. case "newQuery":{
  263. newQuerybyWhereStr(payload.data[0],payload.data[1],GetConfigDataByName("MYQueryLayer"),null,null,payload.data[2]);
  264. break;
  265. }
  266. case "onLocationforGrid" :{
  267. setPointBylonlatForGrid(payload.data[0],payload.data[1]);
  268. break;
  269. }
  270. case "onLocationforAddress":{
  271. setPointBylonlatForAddress(payload.data[0],payload.data[1]);
  272. break;
  273. }
  274. case "onQueryByPoint":{
  275. setPointBylonlatForGetBuffer(payload.data[0],payload.data[1],payload.data[2],payload.data[3],payload.data[4],payload.data[5]);
  276. break;
  277. }
  278. case "onQueryByGrid":{
  279. getGridGeometry(payload.data[0],payload.data[1]);
  280. break;
  281. }
  282. case "onMapCenter":{
  283. var mapcenter = m_view.center ;
  284. window.parent.postMessage(
  285. {
  286. method: "mapCenterCallback",
  287. data:[JSON.stringify(mapcenter).replace(/\"/g,'"')]
  288. },
  289. '*'
  290. );
  291. break;
  292. }
  293. case "onMapLevel":{
  294. var mapzoom = m_view.zoom;
  295. window.parent.postMessage(
  296. {
  297. method: "mapLevelCallback",
  298. data:[JSON.stringify(mapzoom).replace(/\"/g,'"')]
  299. },
  300. '*'
  301. );
  302. break;
  303. }
  304. case "onMapSetCenter":{
  305. goToZoom(payload.data[0],payload.data[1]);
  306. // setPointBylonlatForSetCenter(payload.data[0],payload.data[1]);
  307. break;
  308. }
  309. case "onGetXYbyAddress":{
  310. getXYbyAddress(payload.data[0]);
  311. break;
  312. }
  313. case "onSetInitExtentByStr":{
  314. // getXYbyAddress(payload.data[0]);
  315. if(payload.data[0] == "区县边界")
  316. queryForExtent(payload.data[0],"区县名称=" +"'"+ payload.data[1]+"'",100);
  317. else
  318. queryForExtent(payload.data[0], "街道名称=" +"'"+ payload.data[1]+"'",100);
  319. break;
  320. }
  321. case "onQueryByCondition":{
  322. newQuerybyWhereStr(payload.data[0],payload.data[1],GetConfigDataByName("MYQueryLayer"),null,payload.data[2],payload.data[3]);
  323. break;
  324. }
  325. case "openFeatureLayerByNameandWhere":{
  326. newOpenFeatureLayer(payload.data[0],payload.data[1],payload.data[2],payload.data[3],payload.data[4]);
  327. break;
  328. }
  329. case "onClickLocation":{
  330. m_mapClickdraw = true;
  331. m_mapAttribute = payload.data[0];
  332. m_mapToolTip = payload.data[1];
  333. m_mapImgUrl = payload.data[2];
  334. m_mapImgWidth = payload.data[3];
  335. m_mapImgHeight = payload.data[4];
  336. break;
  337. }
  338. case "onSetResizeType":{
  339. sj_type = payload.data[0];
  340. sj_radius = payload.data[1];
  341. sj_layername = payload.data[2];
  342. break;
  343. }
  344. case "onSetLayerCluster":{
  345. setLayerCluster(payload.data[0],payload.data[1]);
  346. break;
  347. }
  348. case "onShowPolygonandText":{
  349. var jsonarr = payload.data[0];
  350. for(var i=0;i<jsonarr.length;i++){
  351. var jsonStr = jsonarr[i];
  352. // var test = jsonStr;
  353. ShowPolygonandText(jsonStr.type,jsonStr.name,jsonStr.text);
  354. }
  355. // ShowPolygonandText(payload.data[0],payload.data[1],payload.data[2]);
  356. break;
  357. }
  358. case "onLocationGetLatLon":{
  359. var action = m_drawtool.create("point");
  360. require(["esri/geometry/Point","esri/Graphic"],
  361. function(Point,Graphic) {
  362. action.on("draw-complete",
  363. function(evt) {
  364. m_view.graphics.removeAll();
  365. GraphicsLayer_flyTipLayer.removeAll();
  366. var point = new Point({
  367. x: evt.coordinates[0],
  368. y: evt.coordinates[1],
  369. spatialReference: m_view.spatialReference
  370. });
  371. var markerSymbol = {
  372. type: "simple-marker",
  373. color: payload.data[0],
  374. style: "circle",
  375. size: 10
  376. }
  377. var pointGraphic = new Graphic({
  378. geometry: point,
  379. symbol: markerSymbol
  380. });
  381. GraphicsLayer_flyTipLayer.add(pointGraphic);
  382. window.parent.postMessage(
  383. {
  384. method: "onLocationGetLatLonbackfun",
  385. data: [evt.coordinates]
  386. },
  387. '*'
  388. );
  389. });
  390. });
  391. break;
  392. }
  393. case "onDrawPolygonCircle":{
  394. require(["esri/geometry/Polygon","esri/Graphic","esri/geometry/Point","esri/geometry/Circle"],
  395. function(Polygon,Graphic,Point,Circle) {
  396. m_view.graphics.removeAll();
  397. GraphicsLayer_flyTipLayer.removeAll();
  398. var action = m_drawtool.create("circle");
  399. // 获取焦点
  400. m_view.focus();
  401. //顶点移除事件
  402. action.on("vertex-remove", createCircle);
  403. // 鼠标移动事件
  404. action.on("cursor-update", createCircle);
  405. // 绘制完成事件
  406. action.on("draw-complete", createCirclecomplete);
  407. function createCircle(event) {
  408. //获取所有顶点
  409. var vertices = event.vertices;
  410. //少于一个点无法展示圆
  411. if(vertices.length<2){
  412. return
  413. }
  414. //清除之前绘制
  415. GraphicsLayer_flyTipLayer.removeAll();
  416. //生成绘制的图形,两点画圆
  417. var center=new Point({
  418. hasZ: false,
  419. hasM: false,
  420. x:vertices[0][0],
  421. y:vertices[0][1],
  422. spatialReference: m_view.spatialReference
  423. });
  424. var dis=center.distance(new Point({
  425. hasZ: false,
  426. hasM: false,
  427. x:vertices[1][0],
  428. y:vertices[1][1],
  429. spatialReference: m_view.spatialReference
  430. }));
  431. var graphic = new Graphic({
  432. geometry: new Circle({
  433. hasZ: false,
  434. hasM: false,
  435. center:center,
  436. radius:dis,
  437. spatialReference: m_view.spatialReference
  438. }),
  439. symbol: {
  440. type: "simple-fill", // autocasts as new SimpleFillSymbol()
  441. color: [ 51,51, 204, 0.9 ],
  442. style: "solid",
  443. outline: { // autocasts as new SimpleLineSymbol()
  444. color: "white",
  445. width: 1
  446. }
  447. }
  448. });
  449. // 将绘制的图形添加到view
  450. GraphicsLayer_flyTipLayer.add(graphic);
  451. }
  452. function createCirclecomplete(event) {
  453. //获取所有顶点
  454. var vertices = event.vertices;
  455. //少于一个点无法展示圆
  456. if(vertices.length<2){
  457. return
  458. }
  459. //清除之前绘制
  460. GraphicsLayer_flyTipLayer.removeAll();
  461. //生成绘制的图形,两点画圆
  462. var center=new Point({
  463. hasZ: false,
  464. hasM: false,
  465. x:vertices[0][0],
  466. y:vertices[0][1],
  467. spatialReference: m_view.spatialReference
  468. });
  469. var dis=center.distance(new Point({
  470. hasZ: false,
  471. hasM: false,
  472. x:vertices[1][0],
  473. y:vertices[1][1],
  474. spatialReference: m_view.spatialReference
  475. }));
  476. var graphic = new Graphic({
  477. geometry: new Circle({
  478. hasZ: false,
  479. hasM: false,
  480. center:center,
  481. radius:dis,
  482. spatialReference: m_view.spatialReference
  483. }),
  484. symbol: {
  485. type: "simple-fill", // autocasts as new SimpleFillSymbol()
  486. color: [ 51,51, 204, 0.9 ],
  487. style: "solid",
  488. outline: { // autocasts as new SimpleLineSymbol()
  489. color: "white",
  490. width: 1
  491. }
  492. }
  493. });
  494. // 将绘制的图形添加到view
  495. GraphicsLayer_flyTipLayer.add(graphic);
  496. window.parent.postMessage(
  497. {
  498. method: "onDrawPolygoncallbackfun",
  499. data: [graphic.geometry.rings]
  500. },
  501. '*'
  502. );
  503. }
  504. });
  505. break;
  506. }
  507. case "onLightArea":{
  508. highLightArea(payload.data[0],payload.data[1],payload.data[2],payload.data[3]);
  509. break;
  510. }
  511. case "onEchartsRoute":{
  512. echartsRoute(payload.data[0],payload.data[1],payload.data[2],payload.data[3]);
  513. break;
  514. }
  515. case "onPopupIn":{
  516. if(popupInfos.length>0){
  517. popupShowAll();
  518. }
  519. else{
  520. popupInit(payload.data[0],payload.data[1]);
  521. }
  522. break;
  523. }
  524. case "onPopupClose":{
  525. popupCloseAll();
  526. popupInfos=[];
  527. break;
  528. }
  529. case "doClusterByJson":{
  530. clusterByJson(payload.data[0]);
  531. break;
  532. }
  533. case "doCloseClusterByJson":{
  534. closeClusterByJson();
  535. break
  536. }
  537. case 'doDeletePointById':
  538. doDeletePointById(payload.data[0]);
  539. break;
  540. case "doShowAreaName":
  541. doShowAreaName(payload.data[0],payload.data[1],payload.data[2],payload.data[3],payload.data[4]);
  542. break;
  543. case "onDrawPolygonSquare":{
  544. require(["esri/geometry/Polygon","esri/Graphic","esri/geometry/Point","esri/geometry/Circle"],
  545. function(Polygon,Graphic,Point,Circle) {
  546. m_view.graphics.removeAll();
  547. GraphicsLayer_flyTipLayer.removeAll();
  548. var action = m_drawtool.create("rectangle", {
  549. mode: "click"//点击方式加点
  550. });
  551. // 获取焦点
  552. m_view.focus();
  553. //顶点移除事件
  554. action.on("vertex-remove", createRectangle);
  555. // 鼠标移动事件
  556. action.on("cursor-update", createRectangle);
  557. // 绘制完成事件
  558. action.on("draw-complete", createRectangleComplete);
  559. function createRectangle(event) {
  560. //获取所有顶点
  561. var vertices = event.vertices;
  562. //两点画矩形
  563. if(vertices.length<2){
  564. return
  565. }
  566. var rings=[vertices[0],[vertices[0][0],vertices[1][1]],vertices[1],[vertices[1][0],vertices[0][1]]];
  567. //清除之前绘制
  568. GraphicsLayer_flyTipLayer.removeAll();
  569. // 生成绘制的图形
  570. var graphic = new Graphic({
  571. geometry: new Polygon({
  572. hasZ: false,
  573. hasM: false,
  574. rings: [rings],
  575. spatialReference: m_view.spatialReference
  576. }),
  577. symbol: {
  578. type: "simple-fill", // autocasts as new SimpleFillSymbol()
  579. color: [ 51,51, 204, 0.9 ],
  580. style: "solid",
  581. outline: { // autocasts as new SimpleLineSymbol()
  582. color: "white",
  583. width: 1
  584. }
  585. }
  586. });
  587. // 将绘制的图形添加到view
  588. GraphicsLayer_flyTipLayer.add(graphic);
  589. }
  590. function createRectangleComplete(event) {
  591. //获取所有顶点
  592. var vertices = event.vertices;
  593. //两点画矩形
  594. if(vertices.length<2){
  595. return
  596. }
  597. var rings=[vertices[0],[vertices[0][0],vertices[1][1]],vertices[1],[vertices[1][0],vertices[0][1]]];
  598. //清除之前绘制
  599. GraphicsLayer_flyTipLayer.removeAll();
  600. // 生成绘制的图形
  601. var graphic = new Graphic({
  602. geometry: new Polygon({
  603. hasZ: false,
  604. hasM: false,
  605. rings: [rings],
  606. spatialReference: m_view.spatialReference
  607. }),
  608. symbol: {
  609. type: "simple-fill", // autocasts as new SimpleFillSymbol()
  610. color: [ 51,51, 204, 0.9 ],
  611. style: "solid",
  612. outline: { // autocasts as new SimpleLineSymbol()
  613. color: "white",
  614. width: 1
  615. }
  616. }
  617. });
  618. // 将绘制的图形添加到view
  619. GraphicsLayer_flyTipLayer.add(graphic);
  620. window.parent.postMessage(
  621. {
  622. method: "onDrawPolygoncallbackfun",
  623. data: [graphic.geometry.rings]
  624. },
  625. '*'
  626. );
  627. }
  628. });
  629. break;
  630. }
  631. case "doCorrugatedPointByOid":{
  632. doCorrugatedPointByOid(payload.data[0]);
  633. break;
  634. }
  635. case "doClearCorrugatedPoint":{
  636. doClearCorrugatedPoint();
  637. break;
  638. }
  639. case "doXyToStreetId":{
  640. doXyToStreetId(payload.data[0],payload.data[1]);
  641. break;
  642. }
  643. case "goToGraphic":{
  644. goToGraphic(payload.data[0], payload.data[1]);
  645. break;
  646. }
  647. case "doWaterRouteClick":{
  648. if(chartLayer){
  649. chartLayer.removeLayer();
  650. chartLayer=null;
  651. }
  652. if(chartLayer2){
  653. chartLayer2.removeLayer();
  654. chartLayer2=null;
  655. }
  656. if(chartLayer3){
  657. chartLayer3.removeLayer();
  658. chartLayer3=null;
  659. }
  660. queryResetNumByType(payload.data[0]);
  661. break
  662. }
  663. }
  664. };
  665. //初始化配置文件
  666. GetConfigData();
  667. require(["dojo/domReady!"], function () {
  668. loadMap();
  669. });
  670. function loadMap() {
  671. //判断
  672. if (GetConfigDataByName("maptype") == "3D") {
  673. init3DScene();
  674. }
  675. else {
  676. initMap();
  677. }
  678. }
  679. function onMapLoadInfo(){
  680. console.log("test2")
  681. postToParentPageMethed("maploadCallback",[]);
  682. }
  683. function onMapLoaded()
  684. {
  685. removeLoadingDiv();
  686. // GetLayerMainRestInfo2(GetConfigDataByName("MYQueryLayer"));
  687. // var test = GetConfigDataByName("MYCXFeatureLayerLayer");
  688. // setPointBylonlat(121,30);
  689. //alert("加载完成");
  690. }
  691. //--------------- 按钮事件 -----------------
  692. //切换二三维地图
  693. function onViewTestClick() {
  694. ViewChange()
  695. }
  696. function ViewChange() {
  697. //m_view.container=null;
  698. // showLoadingDiv("正在切换地图,请稍后...");
  699. if (currentMapMode == "2D") {
  700. switchTo3DMap();
  701. }
  702. else {
  703. switchTo2DMap();
  704. }
  705. }
  706. //清空地图
  707. function btClear_Click() {
  708. //Clear();
  709. }
  710. function Clear(type) {
  711. require(["esri/layers/GraphicsLayer"],
  712. function ( GraphicsLayer) {
  713. switch (type) {
  714. case "all":
  715. {
  716. m_map.remove(GraphicsLayer_DrawLayer)
  717. GraphicsLayer_DrawLayer = new GraphicsLayer({id: "myDrawGLayer"});
  718. GraphicsLayer_DrawLayer.listMode = "hide";
  719. m_map.add(GraphicsLayer_DrawLayer);
  720. GraphicsLayer_myLayer.removeAll();
  721. isInLightArea = ""
  722. // GraphicsLayer_DrawLayer.removeAll();
  723. GraphicsLayer_flyTipLayer.removeAll();
  724. if (chartLayer) {
  725. chartLayer.removeLayer();
  726. chartLayer = null;
  727. }
  728. if (chartLayer2) {
  729. chartLayer2.removeLayer();
  730. chartLayer2 = null;
  731. }
  732. if (chartLayer3) {
  733. chartLayer3.removeLayer();
  734. chartLayer3 = null;
  735. }
  736. xmlQueryExtend = null;
  737. queryExtent = null;
  738. break;
  739. }
  740. case "drawLayer":
  741. {
  742. GraphicsLayer_DrawLayer.removeAll();
  743. GraphicsLayer_flyTipLayer.removeAll();
  744. xmlQueryExtend = null;
  745. queryExtent = null;
  746. break;
  747. }
  748. case "queryLayer":
  749. {
  750. GraphicsLayer_myLayer.removeAll();
  751. isInLightArea = ""
  752. GraphicsLayer_flyTipLayer.removeAll();
  753. xmlQueryExtend = null;
  754. queryExtent = null;
  755. break;
  756. }
  757. case "chartLayer":
  758. {
  759. if (chartLayer) {
  760. chartLayer.removeLayer();
  761. chartLayer = null;
  762. }
  763. if (chartLayer2) {
  764. chartLayer2.removeLayer();
  765. chartLayer2 = null;
  766. }
  767. if (chartLayer3) {
  768. chartLayer3.removeLayer();
  769. chartLayer3 = null;
  770. }
  771. break;
  772. }
  773. }
  774. })
  775. // var mtype = type | "all";
  776. }
  777. //查询
  778. function btSearch_Click() {
  779. // var dynamicLayerURL="https://services8.arcgis.com/wUIATpkD1eTGk5lC/arcgis/rest/services/CMRQTest2_WFL1/FeatureServer";
  780. // var QueryLayerID="13";
  781. var dynamicLayerURL ="http://139.196.105.31:6080/ArcGIS/rest/services/HKEMAP/MapServer";
  782. if(GetConfigDataByName("QueryLayer"))
  783. {
  784. dynamicLayerURL=GetConfigDataByName("QueryLayer");
  785. }
  786. var QueryLayerID = "13";
  787. var whereString = "";
  788. whereString = "HANDLE号 like '%" + document.getElementById("txtSearch").value + "%'";
  789. require([
  790. "esri/Graphic",
  791. "esri/tasks/QueryTask",
  792. "esri/tasks/support/Query",
  793. "esri/symbols/SimpleMarkerSymbol",
  794. "esri/symbols/SimpleLineSymbol",
  795. "esri/geometry/Point",
  796. "esri/geometry/Polyline",
  797. "esri/symbols/PointSymbol3D",
  798. "esri/renderers/SimpleRenderer",
  799. "esri/symbols/ObjectSymbol3DLayer",
  800. "esri/PopupTemplate",
  801. "dojo/_base/array"
  802. ], function (Graphic, QueryTask, Query, SimpleMarkerSymbol, SimpleLineSymbol, Point, Polyline, PointSymbol3D, SimpleRenderer, ObjectSymbol3DLayer, PopupTemplate, array) {
  803. var layerinfo = getLayerByLayerId(QueryLayerID);
  804. var queryTask = new QueryTask(dynamicLayerURL + "/" + QueryLayerID);
  805. var query = new Query();
  806. query.returnGeometry = true;
  807. query.outFields = ["*"];
  808. query.where = whereString;
  809. var defaultPointSymbol = new SimpleMarkerSymbol({
  810. color: [226, 119, 40],
  811. outline: { // autocasts as new SimpleLineSymbol()
  812. color: [255, 255, 255],
  813. width: 2
  814. }
  815. });
  816. var defaultLineSymbol = new SimpleLineSymbol({
  817. color: [255, 0, 255],
  818. width: 2
  819. });
  820. var objectSymbol = new PointSymbol3D({
  821. symbolLayers: [new ObjectSymbol3DLayer({
  822. width: 2,
  823. height: 3,
  824. resource: {
  825. primitive: "cone"
  826. },
  827. material: {
  828. color: "#FFD700"
  829. }
  830. })]
  831. });
  832. var objectSymbolRenderer = new SimpleRenderer({
  833. symbol: objectSymbol
  834. });
  835. //graphicsLayer.renderer = objectSymbolRenderer;
  836. queryTask.execute(query).then(function (results) {
  837. array.forEach(results.features, function (graphic, i) {
  838. var graphic2;
  839. var point2;
  840. switch (graphic.geometry.type) {
  841. case "point":
  842. {
  843. graphic.geometry.z = 1000;
  844. graphic.symbol = defaultPointSymbol;
  845. break;
  846. }
  847. case "polyline":
  848. var geo = Polyline(graphic.geometry);
  849. geo.hasZ = true;
  850. geo.hasM = false;
  851. var paths = geo.paths;
  852. for (var i = 0; i < paths.length; i++) {
  853. for (var j = 0; j < paths[i].length; j++) {
  854. paths[i][j] = [paths[i][j][0], paths[i][j][1], 50];
  855. }
  856. var middleNumber = Math.floor(paths[i].length / 2);
  857. point2 = new Point({
  858. x: paths[i][middleNumber][0],
  859. y: paths[i][middleNumber][1],
  860. z: 50,
  861. spatialReference: view.spatialReference
  862. });
  863. }
  864. graphic.symbol = defaultLineSymbol;
  865. graphic.geometry = geo;
  866. graphic2 = new Graphic();
  867. graphic2.attributes = graphic.attributes;
  868. graphic2.geometry = point2;
  869. graphic2.symbol = objectSymbol;
  870. graphic2.attributes = graphic.attributes;
  871. graphic2.popupTemplate = layerinfo.popupTemplate;
  872. graphic.popupTemplate = new PopupTemplate({
  873. title: "HANDLE号:{HANDLE号}"
  874. });
  875. break;
  876. }
  877. GraphicsLayer_myLayer.add(graphic);
  878. GraphicsLayer_myLayer.add(graphic2);
  879. });
  880. });
  881. })
  882. }
  883. var laylistshow=0;
  884. function layerOnOff() {
  885. if(laylistshow==0){
  886. laylistshow=1;
  887. m_view.ui.add(layerList, {
  888. position: "bottom-right"
  889. });
  890. }
  891. else
  892. {
  893. laylistshow=0;
  894. m_view.ui.remove(layerList);
  895. }
  896. }
  897. function doSetExtent(num) {
  898. var xmin,ymin,xmax,ymax;
  899. switch(num){
  900. case 1:
  901. xmin=-17221.816;
  902. ymin=-5450.66;
  903. xmax=-15189.445;
  904. ymax=-4297.402;
  905. break;
  906. case 2:
  907. xmin=-25930.782;
  908. ymin=-10527.042;
  909. xmax=-5599.259;
  910. ymax=647.995;
  911. break;
  912. case 3:
  913. xmin=-89836.648;
  914. ymin=-56485.216;
  915. xmax=70797.201;
  916. ymax=31738.557;
  917. break;
  918. }
  919. setExtent(xmin,ymin,xmax,ymax);
  920. }
  921. var myAttribute,myToolTip,myImgUrl,myImgWidth,myImgHeight;
  922. function setPointBylonlat(x,y,Attribute,ToolTip,ImgUrl,ImgWidth,ImgHeight){
  923. myAttribute = Attribute;
  924. myToolTip = ToolTip;
  925. myImgUrl = ImgUrl;
  926. myImgWidth = ImgWidth;
  927. myImgHeight=ImgHeight
  928. var url = GetConfigDataByName("WebServiceConvertCoordinateURL");
  929. WsCommonClass("ConvertLonLatToXY",["lon","lat"],[x,y],getXYbylonlat,null,url);
  930. }
  931. function getXYbylonlat(evt){
  932. if(evt[0] == null) {
  933. console.log("经纬度转换失败 error");
  934. return;
  935. }
  936. // console.log(evt[0].textContent);
  937. var point = evt[0].textContent;
  938. var jsonStr = '{"ExChangeRoot": {"Features": [' +
  939. ' { "type": "point", "featureName": "兴趣点", "Feature":[ { "Geometry": { "Points":[ { "Point": "'+point+'" } ]},' +
  940. '"Attribute": '+myAttribute+', "ToolTip": "'+myToolTip+'",' +
  941. '"ImgUrl":"'+myImgUrl +'" ,"ImgWidth":"'+ myImgWidth +'","ImgHeight":"'+myImgHeight +'" } ] } ]}}';
  942. doGetGraphicByJson(jsonStr,true);
  943. // console.log(jsonStr);
  944. }
  945. function setPointBylonlatForGrid(x,y){
  946. var url = GetConfigDataByName("WebServiceConvertCoordinateURL");
  947. WsCommonClass("ConvertLonLatToXY",["lon","lat"],[x,y],getXYbylonlatforGrid,null,url);
  948. }
  949. function getXYbylonlatforGrid(evt){
  950. if(evt[0] == null) {
  951. console.log("经纬度转换失败 error");
  952. return;
  953. }
  954. // console.log(evt[0].textContent);
  955. var point = evt[0].textContent;
  956. identifyTask(point,identifyTaskcallbackfun);
  957. }
  958. function identifyTaskcallbackfun(results){
  959. window.parent.postMessage(
  960. {
  961. method: "identifyTaskcallbackfun",
  962. data: [results]
  963. },
  964. '*'
  965. );
  966. }
  967. function setPointBylonlatForAddress(x,y){
  968. var url = GetConfigDataByName("WebServiceConvertCoordinateURL");
  969. WsCommonClass("ConvertLonLatToXY",["lon","lat"],[x,y],getXYbylonlatforAddress,null,url);
  970. }
  971. function getXYbylonlatforAddress(evt){
  972. if(evt[0] == null) {
  973. console.log("经纬度转换失败 error");
  974. return;
  975. }
  976. // console.log(evt[0].textContent);
  977. var point = evt[0].textContent;
  978. // var url = GetConfigDataByName("WebServiceExtraURL");
  979. // WsCommonClass("GetAddress",["x","y"],[point.split(',')[0],point.split(',')[1]],getAddressCallback,null,url);
  980. GetAddressByXY(point.split(',')[0],point.split(',')[1],50);
  981. }
  982. function getAddressCallback(evt){
  983. if(evt[0] == null) {
  984. console.log("经纬度转换失败 error");
  985. return;
  986. }
  987. var address = evt[0].textContent;
  988. window.parent.postMessage(
  989. {
  990. method: "addressdataCallback",
  991. data: [address]
  992. },
  993. '*'
  994. );
  995. }
  996. var m_radius;
  997. var m_layername;
  998. var m_showGraphic;
  999. function setPointBylonlatForGetBuffer(x,y,layername,radius,isshow,isGoTo){
  1000. m_radius = radius;
  1001. m_layername = layername;
  1002. m_showGraphic = isshow;
  1003. var url = GetConfigDataByName("WebServiceConvertCoordinateURL");
  1004. WsCommonClass("ConvertLonLatToXY",["lon","lat"],[x-0,y-0],getXYbylonlatforBuffer,isGoTo,url);
  1005. }
  1006. function getXYbylonlatforBuffer(evt,isGoTo){
  1007. if(evt[0] == null) {
  1008. console.log("经纬度转换失败 error");
  1009. return;
  1010. }
  1011. var point = evt[0].textContent;
  1012. // var buffer = getBufferByPoint(point.split(',')[0],point.split(',')[1],m_radius);
  1013. getBufferByPoint(point.split(',')[0],point.split(',')[1],m_radius,m_layername,m_showGraphic,isGoTo);
  1014. //m_layername;
  1015. // queryByGeometryAndLayer(buffer,m_layername);
  1016. }
  1017. function getGridGeometry(grid,layername){
  1018. getGridGeometryByGridID(grid,layername);
  1019. }
  1020. function setPointBylonlatForSetCenter(x,y){
  1021. var url = GetConfigDataByName("WebServiceConvertCoordinateURL");
  1022. WsCommonClass("ConvertLonLatToXY",["lon","lat"],[x-0,y-0],getPointBylonlatForSetCenterr,null,url);
  1023. }
  1024. function getPointBylonlatForSetCenterr(evt){
  1025. if(evt[0] == null) {
  1026. console.log("经纬度转换失败 error");
  1027. return;
  1028. }
  1029. var point = evt[0].textContent;
  1030. m_view.center.x = point.split(',')[0]-0;
  1031. m_view.center.y = point.split(',')[1]-0;
  1032. m_view.goTo({
  1033. target: m_view.center
  1034. });
  1035. // m_view.center = [point.split(',')[0]-0,point.split(',')[1]-0];
  1036. }
  1037. var callMeasureLengthfun;
  1038. function MeasureLengthByPoint(x,y,x1,y1,fun){
  1039. callMeasureLengthfun = fun;
  1040. var url = GetConfigDataByName("WebServiceConvertCoordinateURL");
  1041. var sql="121,31;121,31.1";
  1042. sql = x+","+y+";"+x1+","+y1;
  1043. WsCommonClass("ConvertLonLatToXYMass",["lonAndLatGroup"],[sql],getXYbylonlatMass,null,url);
  1044. }
  1045. function getXYbylonlatMass(evt){
  1046. console.log(evt[0].textContent);
  1047. var points = evt[0].textContent.split(';');
  1048. var x = points[0].split(',')[0];
  1049. var y = points[0].split(',')[1];
  1050. var x1 = points[1].split(',')[0];
  1051. var y1 = points[1].split(',')[1];
  1052. var len = measurePolylineByPoint(x,y,x1,y1);
  1053. // parent.eval(callMeasureLengthfun+"("+ len+")");
  1054. window.parent.postMessage(
  1055. {
  1056. method: callMeasureLengthfun,
  1057. data: [len]
  1058. },
  1059. '*'
  1060. );
  1061. }
  1062. function getXYbyAddress(str){
  1063. var url = GetConfigDataByName("WebServiceExtraURL");
  1064. WsCommonClass("GetStreetInfo",["address"],[str],getXYbyAddressCallback,null,url);
  1065. }
  1066. function getXYbyAddressCallback(evt){
  1067. if(evt[0] == null) {
  1068. console.log("error");
  1069. return;
  1070. }
  1071. // var jsonArray = $.xml2json(evt[0].textContent);
  1072. var jsonArray = $.xml2json(evt[0].innerHTML);
  1073. // var jsonArray = xmltojson(evt[0].textContent);
  1074. //var jsonArray =JSON.parse(evt[0].textContent)[0].data;
  1075. window.parent.postMessage(
  1076. {
  1077. method: "XYbyAddressCallback",
  1078. data:[JSON.stringify(jsonArray).replace(/\"/g,'"')]
  1079. },
  1080. '*'
  1081. );
  1082. }
  1083. function newOpenFeatureLayer(layername,type ,name,isGoTo,isOpen){
  1084. newOpenLayer(layername,type ,name,isGoTo,isOpen);
  1085. }
  1086. function popupClick(json) {
  1087. postToParentPageMethed("popupClickReturn",[json]);
  1088. }
  1089. function sqlReturn(evt,keyValue){
  1090. require(["esri/geometry/Extent", "esri/Graphic"],
  1091. function(Extent, Graphic) {
  1092. var allCount;
  1093. var pageIndex;
  1094. var jsonArray ;
  1095. if(evt[0] != null) {
  1096. allCount =JSON.parse(evt[0].textContent)[0].AllCount;
  1097. pageIndex=JSON.parse(evt[0].textContent)[0].pageIndex;
  1098. jsonArray =JSON.parse(evt[0].textContent)[0].data;
  1099. }else{
  1100. jsonArray =[]
  1101. }
  1102. switch (keyValue){
  1103. case "queryResetNumByType":{
  1104. var TestData1 = [ ]; var TestData2 = [ ];
  1105. for(var i=0;i<jsonArray.length;i++){
  1106. TestData1.push( [{ name:jsonArray[i].water_source_name,xy:[jsonArray[i].x1,jsonArray[i].y1] },
  1107. { name: jsonArray[i].water_work_name,xy:[jsonArray[i].x2,jsonArray[i].y2] }]);
  1108. TestData2.push( [{ name:jsonArray[i].water_work_name,xy:[jsonArray[i].x2,jsonArray[i].y2] },
  1109. { name: jsonArray[i].area_name,xy:[jsonArray[i].x3,jsonArray[i].y3] }]);
  1110. }
  1111. echartsWaterSourceToWorkRoute(TestData1,"#3581FF","",4);
  1112. echartsWaterWorkToAreaRoute(TestData2,"#42ebff","",4);
  1113. break;
  1114. }
  1115. }
  1116. })
  1117. }
  1118. </script>
  1119. </head>
  1120. <body>
  1121. <div id="mapDiv">
  1122. <!--<div id="viewTest">-->
  1123. <!--<button onclick="layerOnOff();">图层开关</button>-->
  1124. <!--</div>-->
  1125. </div>
  1126. <div id="infoDialog" title="详细信息">
  1127. <div id="divShowResult"></div>
  1128. </div>
  1129. </body>
  1130. </html>