8b85f5557f86274d82d7dab29e2515e8af1496d6.svn-base 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. <template>
  2. <div id="mapContent" style="width:100%;height:100%;float:right;">
  3. <div id="mapNode" style="width:100%;height:100%;"></div>
  4. </div>
  5. </template>
  6. <script>
  7. import * as esriLoader from 'esri-loader'
  8. export default {
  9. name:'mapContent',
  10. components:{},
  11. data(){
  12. return{
  13. tianditu_img_c:null,//天地图全局对象
  14. tianditu_img_c_zhuji:null,//天地图影像注记
  15. mapObject:null,//map全局对象
  16. viewObject:null,//view全局对象
  17. option:{url:'http://10.1.102.143/arcgis_js_api/4.5/init.js'},//配置arcgis api
  18. }
  19. },
  20. computed:{},
  21. mounted:function(){
  22. this.initMap();
  23. },
  24. watch:{
  25. statusStack:function(oldValue,newValue){
  26. // this.xzqChange(newValue[newValue.length - 1]);
  27. }
  28. },
  29. methods:{
  30. //初始化地图
  31. initMap:function(){
  32. var _self = this;
  33. esriLoader.loadModules(["esri/Map","esri/views/MapView","esri/geometry/Extent",
  34. "esri/geometry/SpatialReference","esri/layers/testLayer","esri/layers/waterRSLayer",
  35. "esri/layers/TimeImageLayer","esri/layers/superMapZhuji","esri/config","esri/layers/GraphicsLayer",
  36. "dojo/domReady!"],_self.option)
  37. .then(([Map,MapView,Extent,SpatialReference,testLayer,waterRSLayer,
  38. TimeImageLayer,superMapZhuji,esriConfig,GraphicsLayer]) => {
  39. esriConfig.request.corsEnabledServers.push("t0.tianditu.com");
  40. //天地图影像option
  41. var options_tianditu_img_c = {
  42. "id": "tianditu_img_c",
  43. "label": "天地图影像地图",
  44. "visible": true,
  45. "opacity": 1,
  46. "style": "default",
  47. "wmtslayer": "vec",
  48. "tileMatrixSet": "c",
  49. "format": "tiles",
  50. "urlTemplate": "http://{subDomain}.tianditu.com/img_c/wmts?SERVICE=WMTS& VERSION=1.0.0&REQUEST=GetTile&LAYER=img&STYLE=default&FORMAT=tiles&TILEMATRIXSET=c&TILEMATRIX={level}&TILEROW={row}&TILECOL={col}",
  51. "copyright": "TiandituWMTS",
  52. "subDomains": ["t0"]
  53. };
  54. //天地图影像注记option
  55. var options_tianditu_img_c_zhuji = {
  56. "id": "tianditu_img_c_zhuji",
  57. "label": "天地图影像地图注记",
  58. "visible": true,
  59. "opacity": 1,
  60. "style": "default",
  61. "wmtslayer": "vec",
  62. "tileMatrixSet": "c",
  63. "format": "tiles",
  64. "urlTemplate": "http://{subDomain}.tianditu.com/cia_c/wmts?SERVICE=WMTS& VERSION=1.0.0&REQUEST=GetTile&LAYER=cia&STYLE=default&FORMAT=tiles&TILEMATRIXSET=c&TILEMATRIX={level}&TILEROW={row}&TILECOL={col}",
  65. "copyright": "TiandituWMTS",
  66. "subDomains": ["t0"]
  67. };
  68. _self.tianditu_img_c = new testLayer(options_tianditu_img_c);
  69. _self.tianditu_img_c_zhuji = new testLayer(options_tianditu_img_c_zhuji);
  70. //初始化map对象
  71. _self.mapObject = new Map();
  72. _self.mapObject.add(_self.tianditu_img_c,0);
  73. _self.mapObject.add(_self.tianditu_img_c_zhuji,1);
  74. //初始化view对象
  75. _self.viewObject = new MapView({
  76. container:"mapNode",
  77. map:_self.mapObject,
  78. viewingMode: "global",
  79. });
  80. //设置地图左上角放大缩小按钮隐藏
  81. _self.viewObject.ui.empty("top-left");
  82. _self.viewObject.then(()=>{
  83. var xzqGraphicLayer = new GraphicsLayer({id : "xzqGraphicLayer"});//行政区边界graphicLayer
  84. _self.mapObject.add(xzqGraphicLayer,10);
  85. var ext = new Extent({
  86. xmin: 42.88346723165233,
  87. ymin: 12.017399169398608,
  88. xmax: 163.07685370953612,
  89. ymax: 58.56373990644145,
  90. spatialReference: new SpatialReference({wkid:4490})
  91. });
  92. _self.viewObject.Extent = ext;
  93. _self.xzqChange("420000");
  94. });
  95. //鼠标移入事件
  96. _self.viewObject.on("pointer-move",function(event){
  97. });
  98. //鼠标点击事件
  99. _self.viewObject.on("click",function(event){
  100. var screenPoint = {
  101. x: event.x,
  102. y: event.y
  103. };
  104. //检查是否点到graphic
  105. _self.viewObject.hitTest(screenPoint).then(function(response){
  106. });
  107. });
  108. });
  109. },
  110. //定位行政区
  111. xzqChange:function(xzqid){
  112. var _self = this;
  113. esriLoader.loadModules(["esri/Graphic","esri/layers/GraphicsLayer","esri/geometry/SpatialReference","esri/geometry/Extent","esri/geometry/Polyline","esri/geometry/Polygon","esri/tasks/QueryTask", "esri/tasks/support/Query","dojo/domReady!"],_self.option).then(([Graphic,GraphicsLayer,SpatialReference,Extent,Polyline,Polygon,QueryTask, Query])=>{
  114. var queryTask = new QueryTask();
  115. var query = new Query();
  116. //根据行政区划码判断 全国 省、市、县,做查询
  117. if(xzqid.substring(0,6) == "000000"){//全国
  118. var xzqGraphicLayer = _self.mapObject.findLayerById("xzqGraphicLayer");
  119. xzqGraphicLayer.removeAll();
  120. var ext = new Extent({
  121. xmin: 42.88346723165233,
  122. ymin: 12.017399169398608,
  123. xmax: 163.07685370953612,
  124. ymax: 58.56373990644145,
  125. spatialReference: new SpatialReference({wkid:4490})
  126. });
  127. _self.viewObject.Extent = ext;
  128. return;
  129. }else if(xzqid.substring(2,6) == "0000"){//省
  130. queryTask.url = "http://10.1.198.103:6080/arcgis/rest/services/hzz/hzz_xzq/MapServer/1";
  131. query.where = "PROV_CODE='"+xzqid+"'";
  132. }else if(xzqid.substring(4,6) =="00"){//市
  133. queryTask.url = "http://10.1.198.103:6080/arcgis/rest/services/hzz/hzz_xzq/MapServer/0";
  134. query.where = "DIST_CODE='"+xzqid+"'";
  135. }else{//县
  136. queryTask.url = "http://10.1.198.103:6080/arcgis/rest/services/hzz/hzz_xzq/MapServer/2";
  137. query.where = "CNTY_CODE="+xzqid;
  138. }
  139. query.returnGeometry = true;
  140. query.outFields = ["*"];
  141. queryTask.execute(query).then(function(results){
  142. var symbolLine = {type: "simple-line",color: [ 255,255,0, 1 ],width:"3px",style: "solid"};
  143. var symbolPolygon = {type: "simple-fill",color: [ 214,214, 214, 0 ],outline: {color: "white",width: 0.4},style: "solid"};
  144. var xzqGraphicLayer = _self.mapObject.findLayerById("xzqGraphicLayer");
  145. xzqGraphicLayer.removeAll();
  146. var xzqGraphic;
  147. for(var i=0;i<results.features.length;i++){
  148. var polygon = new Polygon({
  149. rings:results.features[i].geometry.rings,
  150. spatialReference:{wkid:4490}
  151. });
  152. xzqGraphic = new Graphic({
  153. geometry:polygon,
  154. symbol:symbolPolygon,
  155. attributes:results.features[i].attributes
  156. });
  157. xzqGraphicLayer.add(xzqGraphic);
  158. }
  159. _self.viewObject.extent = xzqGraphicLayer.graphics.items[0].geometry.extent;
  160. var lod = _self.viewObject.zoom;
  161. _self.viewObject.zoom = Number(lod - 1);
  162. });
  163. });
  164. },
  165. },
  166. }
  167. </script>