gis.map.js 54 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728
  1. var layer,layeryx,locationLayer,gkvectorLayer,gqvectorLayer,zyqvectorLayer,markersLayer,jyrvectorLayer,boatLayer,modifyvectorLayer;
  2. var modifyFeature,nowModifyFeature;
  3. var uflldLayerMap;
  4. var gis = gis || {};
  5. gis.script = function() {
  6. };
  7. //gis.script.url="http://localhost:8090/iserver/services/map-world/rest/maps/World";
  8. gis.script.phase={init:"init",refresh:"refresh",cbrefresh:"cbrefresh"};
  9. gis.script.layerloadover=false;
  10. gis.script.controlLayer=false;
  11. gis.script.subLayers = new Array();
  12. //gis.script.iserverUrl=iserverUrl||"http://"+serverName+":8090/iserver/services";
  13. //gis.script.url=gis.script.iserverUrl+"/map-gk/rest/maps/gist";
  14. //gis.script.yxurl=gis.script.iserverUrl+"/map-gk/rest/maps/gist";
  15. gis.script.url=gisConfigBean.config.sldt.url;
  16. gis.script.yxurl=gisConfigBean.config.yxdt.url;
  17. gis.script.markerAttr={};
  18. gis.script.yxslqh=false;
  19. gis.script.markersLayers={};
  20. gis.script.markersLayersInfo={};
  21. gis.script.selectallLayers={};
  22. gis.script.tckztreeloadover=false;
  23. gis.script.layersInitconfig=[];
  24. gis.script.layersInitconfigObject={};
  25. /*
  26. * 读取配置信息,动态加载图层
  27. */
  28. gis.script.initlayersconfig = function() {
  29. //{"gkvectorLayer":{"id":"gkvectorLayer","Model":{"ty":{"id":"ty","isshow":"true"},"cbdt":{"id":"cbdt","isshow":"false"}},"label":"港口图层"}}
  30. gis.script.layersInitconfig=[];
  31. gis.script.layersInitconfigObject={};
  32. if(gis.script.isBlank(treeType)){
  33. treeType="ty";
  34. }
  35. if(layerConfig){
  36. for(var n in layerConfig){
  37. var data=layerConfig[n];
  38. if(data&&data.Model&&data.Model[treeType]){
  39. var modeldata=jQuery.extend(true, {}, data.Model[treeType]);
  40. modeldata.layerName=n;
  41. gis.script.layersInitconfig.push(modeldata);
  42. gis.script.setlayersInitconfigObject(data.name||data.id,modeldata);
  43. }
  44. }
  45. }
  46. //根据orderby排序,以便按层次加载图层
  47. gis.script.layersInitconfig.sort(function(a,b){
  48. if(gis.script.isNum(a.orderby)&&gis.script.isNum(b.orderby)){
  49. //console.log("CCC1:",parseFloat(a.orderby));
  50. return parseFloat(a.orderby)<parseFloat(b.orderby)?-1:1;
  51. }
  52. return 0;
  53. });
  54. //console.log("CCC1:",gis.script.layersInitconfig);
  55. //console.log("CCC2:",gis.script.layersInitconfigObject);
  56. }
  57. /*
  58. * 配置信息存入layersInitconfigObject,方便读取图层配置信息
  59. */
  60. gis.script.setlayersInitconfigObject = function(key,obj) {
  61. //alert(key);
  62. var info=gis.script.layersInitconfigObject[key];
  63. if(!info){
  64. gis.script.layersInitconfigObject[key]=[];
  65. info=gis.script.layersInitconfigObject[key];
  66. }
  67. info.push(obj);
  68. }
  69. /*
  70. * 控制图层信息,可以通过设置动态显示图层。
  71. */
  72. gis.script.settrendsLayer=function (key,isshow){
  73. var info=gis.script.layersInitconfigObject[key];
  74. if(info&&info.length){
  75. for(var kk=0;kk<info.length;kk++){
  76. var obj=info[kk];
  77. if(obj){
  78. obj.isshow=isshow;
  79. }
  80. }
  81. }
  82. //console.log("CCC1-1:",gis.script.layersInitconfig);
  83. }
  84. /*
  85. * 地图可显示的比例尺
  86. */
  87. gis.script.scales=[2060000,1180000,640000, 320000, 160000, 80000, 40000, 20000, 10000, 5000, 2500,1250];
  88. /*
  89. gis.script.scales=[0.0000008234577570,0.000001180591620,0.0000020811127177082523,0.0000041622254354165045,0.000008324450870833009,0.000016648901741666018,
  90. 0.000033297803483332036,0.00006659560696666407,0.00013319121393332814,0.0002663824278666563,0.0005327648557333126,
  91. 0.0010655297114666252,0.0021310594229332503,0.004262118845866501,0.008524237691733001,0.017048475383466002];
  92. */
  93. /*
  94. * 初始化,加载SuperMap以及地图影像,根据分辨率动态设置按钮位置
  95. */
  96. gis.script.init = function() {
  97. var bgrounddiv=$("#bgrounddiv");
  98. //bgrounddiv.css("width",bgrounddiv.width()-235);
  99. //alert(bgrounddiv.offset().left);
  100. $("#yxslqh").css("top",bgrounddiv.offset().top+10);
  101. //$("#yxslqh").css("left",bgrounddiv.offset().left+23);
  102. $("#yxslqh").css("right",25);
  103. $("#yxslqh img").attr("src",contextPath+'/theme/images/gis/satellite.png');
  104. $("#yxslqh img").bind("click",function(e){
  105. if(gis.script.layerloadover&&layer&&layeryx){
  106. if(gis.script.yxslqh){
  107. layer.setVisibility(true);
  108. layeryx.setVisibility(false);
  109. map.setBaseLayer(layer);
  110. $(this).attr("src",contextPath+'/theme/images/gis/satellite.png');
  111. }else{
  112. layer.setVisibility(false);
  113. layeryx.setVisibility(true);
  114. map.setBaseLayer(layeryx);
  115. $(this).attr("src",contextPath+'/theme/images/gis/map.png');
  116. }
  117. gis.script.yxslqh=!gis.script.yxslqh;
  118. }
  119. //gis.script[this.id](this);
  120. });
  121. annarray=['tckz','cbss','txbj','txsz','txsc','txpstg'];
  122. for(var ii=0;ii<annarray.length;ii++){
  123. var annobj=$("#"+annarray[ii]);
  124. if(annobj&&annobj.length){
  125. annobj.css("top",bgrounddiv.offset().top+10);
  126. annobj.css("right",32+52*(ii+1));
  127. annobj.bind("mousedown",function(){
  128. $(this).css("border","1px solid transparent");
  129. });
  130. annobj.bind("mouseup",function(){
  131. $(this).css("border","0px solid transparent");
  132. });
  133. annobj.bind("mouseout",function(){
  134. $(this).css("border","0px solid #A5AAB4");
  135. });
  136. /*
  137. annobj.bind("click",function(e){
  138. $("#"+this.id+"list").show("slow");
  139. });
  140. */
  141. annobj.bind("click",function(e){
  142. /*
  143. var lobj=$("#"+this.id+"list");
  144. if(lobj.is(':hidden')){
  145. for(var ik=0;ik<annarray.length;ik++){
  146. $("#"+annarray[ik]+"list").hide("slow");
  147. }
  148. lobj.show("slow");
  149. }else{
  150. lobj.hide("slow");
  151. }
  152. //lobj.show("slow");
  153. */
  154. gis.script.buttonclickFun(this.id);
  155. });
  156. }
  157. }
  158. $("#tckz_close").bind("click",function(e){
  159. $("#tckzlist").hide("slow");
  160. gis.script.buttonimgObjRestore('tckz');
  161. });
  162. /*
  163. $("#tckz").css("top",bgrounddiv.offset().top+10);
  164. //$("#yxslqh").css("left",bgrounddiv.offset().left+23);
  165. $("#tckz").css("right",85);
  166. $("#tckz img").bind("click",function(e){
  167. $("#tckzlist").show("slow");
  168. });
  169. $("#tckz_close").bind("click",function(e){
  170. $("#tckzlist").hide("slow");
  171. });
  172. $("#tckz").bind("mousedown",function(){
  173. $("#tckz").css("border","1px solid transparent");
  174. });
  175. $("#tckz").bind("mouseup",function(){
  176. $("#tckz").css("border","0px solid transparent");
  177. });
  178. $("#tckz").bind("mouseover",function(){
  179. //border:0px solid #A5AAB4;
  180. //$("#tckz").css("border","1px solid transparent");
  181. });
  182. $("#tckz").bind("mouseout",function(){
  183. //border:0px solid #A5AAB4;
  184. $("#tckz").css("border","0px solid #A5AAB4");
  185. });
  186. */
  187. $('#banner').mousedown(function(event) {
  188. var isMove = true;
  189. var abs_x = event.pageX - $('div.moveBar').offset().left;
  190. var abs_y = event.pageY - $('div.moveBar').offset().top;
  191. $(document).mousemove(function(event) {
  192. if (isMove) {
  193. var obj = $('div.moveBar');
  194. obj.css({
  195. 'left' : event.pageX - abs_x,
  196. 'top' : event.pageY - abs_y
  197. });
  198. }
  199. }).mouseup(function() {
  200. isMove = false;
  201. });
  202. });
  203. /*
  204. $.each(uiaccordion.find('a').parent(), function(i,val){
  205. var ua=$(val);
  206. alert(i+">>"+val.id);
  207. });
  208. */
  209. /*
  210. var footer=parent.window.document.getElementById("footer");
  211. if(footer){
  212. //alert($(parent.window.document.getElementById("footer")).height());
  213. bgrounddiv.css("height",bgrounddiv.height()-$(footer).height());
  214. }
  215. */
  216. //map = new SuperMap.Map("bgrounddiv");//,{allOverlays: true}
  217. map = new SuperMap.Map("bgrounddiv",{allOverlays: true,controls: [
  218. new SuperMap.Control.Navigation({
  219. dragPanOptions: {
  220. enableKinetic: true
  221. }
  222. })]
  223. });
  224. //scales:[1 / 147914677, 1 / 73957338, 1 / 36978669, 1 / 18489334, 1 / 9244667, 1 / 4622333, 1 / 2311166, 1 / 1000000]
  225. map.addControl(new SuperMap.Control.ScaleLine());
  226. //map.addControl(new SuperMap.Control.ScaleLine(),new SuperMap.Pixel(bgrounddiv.width()-120,bgrounddiv.height()-60));
  227. //初始化复杂缩放控件类
  228. panzoombar=new SuperMap.Control.PanZoomBar();
  229. // 是否固定缩放级别为[0,16]之间的整数,默认为false
  230. panzoombar.forceFixedZoomLevel=true;
  231. //是否显示滑动条,默认值为false
  232. panzoombar.showSlider=true;
  233. /*点击箭头移动地图时,所移动的距离占总距离(上下移动的总距离为高度,左右移动的总距离为宽度)
  234. 的百分比,默认为null。 例如:如果slideRatio 设为0.5, 则垂直上移地图半个地图高度.*/
  235. panzoombar.slideRatio=0.5;
  236. //设置缩放条滑块的高度,默认为11
  237. panzoombar.zoomStopHeight=5;
  238. //设置缩放条滑块的宽度,默认为13
  239. panzoombar.zoomStopWidth=9;
  240. //map.addControl(panzoombar);
  241. map.addControl(panzoombar,new SuperMap.Pixel(bgrounddiv.width()-95,60));
  242. //map.addControl(new SuperMap.Control.LayerSwitcher());
  243. map.events.register("addlayer",null,function(e) {
  244. //alert(e.layer.CLASS_NAME);
  245. });
  246. map.events.on({"zoomend":gis.script.eventsZoomend});
  247. /*
  248. layer = new SuperMap.Layer.TiledDynamicRESTLayer("World", gis.script.url, null,{maxResolution:"auto"});
  249. //layer = new SuperMap.Layer.TiledDynamicRESTLayer("World", gis.script.url,{transparent: true}, {useCanvas: true, maxResolution: "auto"});
  250. layer.events.on({"layerInitialized": gis.script.addLayer});
  251. */
  252. /*
  253. if(gis.script.controlLayer){
  254. gis.script.initLayersInfo();
  255. }else{
  256. }
  257. */
  258. //1:1214391.3776 ,scales: [1/1214391.3776] ,scales:gis.script.scales
  259. layer = new SuperMap.Layer.TiledDynamicRESTLayer("sldtLayer", gis.script.url, null,{maxResolution:"auto",scales:gis.script.scales});
  260. //layer = new SuperMap.Layer.TiledDynamicRESTLayer("World", gis.script.url,{transparent: true}, {useCanvas: true, maxResolution: "auto"});
  261. layer.visibility=true;
  262. layer.events.on({"layerInitialized": gis.script.addmoreLayer});
  263. //gis.script.initOthenLayer();
  264. //gis.script.initVectorLayer();
  265. //gis.script.initMarkersLayer();
  266. }
  267. /*
  268. * 删除map上的弹出框
  269. */
  270. gis.script.removeAllPopup = function() {
  271. map.removeAllPopup();
  272. }
  273. /*
  274. * 地图比例改变时触发事件
  275. */
  276. gis.script.eventsZoomend = function(e) {
  277. /*
  278. if(markersLayer){
  279. if(e.object&&e.object.zoom==0){
  280. var l=map.getLayer(markersLayer.id);
  281. if(!l){
  282. map.addLayer(markersLayer);
  283. }
  284. }else{
  285. var l=map.getLayer(markersLayer.id);
  286. if(l){
  287. map.removeLayer(l);
  288. }
  289. }
  290. }
  291. */
  292. gis.script.removeAllPopup();
  293. /*
  294. for(var vv in gis.script.markersLayersInfo){
  295. var objinfo=gis.script.markersLayersInfo[vv];
  296. if(!gis.script.isBlank(objinfo.marktypename)&&
  297. gis.script.isNum(objinfo.showMinzoom)&&gis.script.isNum(objinfo.showMaxzoom)){
  298. if(e.object){
  299. //alert((!gis.script.isNum(objinfo.showMinzoom)||objinfo.showMinzoom<=e.object.zoom)&&(!gis.script.isNum(objinfo.showMaxzoom)||objinfo.showMaxzoom>=e.object.zoom));
  300. if((!gis.script.isNum(objinfo.showMinzoom)||objinfo.showMinzoom<=e.object.zoom)&&(!gis.script.isNum(objinfo.showMaxzoom)||objinfo.showMaxzoom>=e.object.zoom)){
  301. var l=gis.script.getmapinLayer(objinfo.marktypename);
  302. if(!l&&gis.script.markersLayers[objinfo.marktypename]){
  303. map.addLayer(gis.script.markersLayers[objinfo.marktypename]);
  304. }
  305. }else{
  306. var l=gis.script.getmapinLayer(objinfo.marktypename);
  307. if(l){
  308. map.removeLayer(l);
  309. }
  310. }
  311. }
  312. }
  313. }
  314. var boatvectorLayers=gis.script.addboatvectorLayer([]);
  315. gis.script.removeLayer([labelLayer,gqvectorLayer,jyrvectorLayer,mtvectorLayer,bwvectorLayer,boatLayer]);
  316. gis.script.removeLayer(boatvectorLayers);
  317. //gis.script.removeLayer(gis.script.addboatvectorLayer([]));
  318. if(labelLayer){
  319. if(e.object&&(e.object.zoom>5)){
  320. var l=map.getLayer(labelLayer.id);
  321. if(!l){
  322. map.addLayer(labelLayer);
  323. }
  324. }
  325. }
  326. if(gqvectorLayer){
  327. if(e.object&&(e.object.zoom>5&&e.object.zoom<7)){
  328. var l=map.getLayer(gqvectorLayer.id);
  329. if(!l){
  330. map.addLayer(gqvectorLayer);
  331. }
  332. }
  333. }
  334. //jyrvectorLayer
  335. if(jyrvectorLayer){
  336. if(e.object&&e.object.zoom>5){
  337. var l=map.getLayer(jyrvectorLayer.id);
  338. if(!l){
  339. map.addLayer(jyrvectorLayer);
  340. }
  341. }
  342. }
  343. if(mtvectorLayer){
  344. if(e.object&&e.object.zoom>8){
  345. var l=map.getLayer(mtvectorLayer.id);
  346. if(!l){
  347. map.addLayer(mtvectorLayer);
  348. }
  349. }
  350. }
  351. if(bwvectorLayer){
  352. if(e.object&&e.object.zoom>8){
  353. var l=map.getLayer(bwvectorLayer.id);
  354. if(!l){
  355. map.addLayer(bwvectorLayer);
  356. }
  357. }
  358. }
  359. if(boatvectorLayers.length>0){
  360. if(gis.script.markersLayers&&gis.script.pitchonMarkers&&gis.script.markersLayers[gis.script.pitchonMarkers]){
  361. gis.script.markersLayers[gis.script.pitchonMarkers].clearMarkers();
  362. }
  363. if(boatLayer){
  364. if(e.object&&e.object.zoom>8){
  365. var l=map.getLayer(boatLayer.id);
  366. if(!l){
  367. map.addLayer(boatLayer);
  368. }
  369. }
  370. }
  371. for(var ik=0;ik<boatvectorLayers.length;ik++){
  372. var blayer=boatvectorLayers[ik];
  373. if(blayer){
  374. if(e.object&&e.object.zoom>8){
  375. var l=map.getLayer(blayer.id);
  376. if(!l){
  377. map.addLayer(blayer);
  378. }
  379. }
  380. }
  381. }
  382. }
  383. */
  384. gis.script.switchtoLayer();
  385. }
  386. /*
  387. * 根据地图比例以及图层配置动态设置显示图层以及图层层次设置
  388. */
  389. gis.script.switchtoLayer = function(){
  390. //alert(gis.script.locationLayerRunRemoveAllFeatures);
  391. /*
  392. if(gis.script.locationLayerRunRemoveAllFeatures){
  393. locationLayer.removeAllFeatures();
  394. }
  395. gis.script.locationLayerRunRemoveAllFeatures=true;
  396. */
  397. //alert(gis.script.locationLayerRunRemoveAllFeatures);
  398. //locationLayer.removeAllFeatures();
  399. //gis.script.removeLayer([gis.script.markersLayers.markersgkLayer,gis.script.markersLayers.markersQskLayer]);
  400. //gis.script.removeLayer([gis.script.markersLayers.gzkMarkersLayer]);
  401. if(gis.script.markersLayers){
  402. for(var nl in gis.script.markersLayers){
  403. gis.script.removeLayer([gis.script.markersLayers[nl]]);
  404. }
  405. }
  406. /*
  407. if(gis.script.selectallLayers){
  408. for(var nl in gis.script.selectallLayers){
  409. gis.script.removeLayer([gis.script.selectallLayers[nl]]);
  410. }
  411. }
  412. */
  413. gis.script.removeLayer([labelLayer,jyrlabelLayer,gqvectorLayer,zyqvectorLayer,jyrvectorLayer,mtvectorLayer,bwvectorLayer,boatLayer]);
  414. gis.script.removeLayer(gis.script.addboatvectorLayer([]));
  415. //map.addLayer(eval("("+"gis.script.markersLayers.markersgkLayer"+")"));
  416. if(gis.script.layersInitconfig&&gis.script.layersInitconfig.length){
  417. for(var i=0;i<gis.script.layersInitconfig.length;i++){
  418. var objinfo=gis.script.layersInitconfig[i];
  419. //alert(data.layerName);
  420. //map.addLayer(eval("("+data.layerName+")"));
  421. /*
  422. if(objinfo.layerName=="gis.script.boatonLayer.boatdanger1"){
  423. alert(objinfo.isshow&&objinfo.isshow==='true');
  424. }
  425. */
  426. if(objinfo.isshow&&objinfo.isshow==='true'){
  427. if((!gis.script.isNum(objinfo.showMinzoom)||objinfo.showMinzoom<=map.zoom)&&(!gis.script.isNum(objinfo.showMaxzoom)||objinfo.showMaxzoom>=map.zoom)){
  428. //alert(objinfo.layerName);
  429. if(eval("("+objinfo.layerName+")")){
  430. if(!gis.script.isBlank(objinfo.clear)){
  431. eval("("+objinfo.layerName+"."+objinfo.clear+"())")
  432. }
  433. map.addLayer(eval("("+objinfo.layerName+")"));
  434. }
  435. }
  436. }
  437. }
  438. }
  439. if(modifyvectorLayer){
  440. var mvLayer=map.getLayer(modifyvectorLayer.id);
  441. if(mvLayer){
  442. gis.script.removeLayer([modifyvectorLayer]);
  443. map.addLayer(modifyvectorLayer);
  444. }
  445. }
  446. }
  447. /*
  448. * 根据id获取markersLayer
  449. */
  450. gis.script.getmapinLayer = function(id) {
  451. if(gis.script.markersLayers[id]){
  452. var vid=gis.script.markersLayers[id].id
  453. return map.getLayer(vid);
  454. }
  455. return;
  456. }
  457. /*
  458. * 删除图层
  459. */
  460. gis.script.removeLayer = function(ar) {
  461. if(ar&&ar.length){
  462. for(var i=0;i<ar.length;i++){
  463. var templayer=ar[i];
  464. if(templayer){
  465. var l=map.getLayer(templayer.id);
  466. if(l){
  467. map.removeLayer(l);
  468. }
  469. }
  470. }
  471. }
  472. }
  473. /*
  474. * 加载矢量地图,以及添加layerInitialized监听事件,根据treeType切换树展示
  475. */
  476. gis.script.addmoreLayer = function() {
  477. layeryx = new SuperMap.Layer.TiledDynamicRESTLayer("yxdtLayer", gis.script.yxurl, null,{maxResolution:"auto",scales:gis.script.scales});
  478. layeryx.visibility=false;
  479. layeryx.events.on({"layerInitialized":function() {
  480. map.addLayers([layer,layeryx]);
  481. //出图,map.setCenter函数显示地图
  482. //var lonlat = layer.maxExtent.getCenterLonLat();
  483. lon =119.66;
  484. lat =32.57;
  485. //定位地图中心
  486. map.setCenter(new SuperMap.LonLat(lon, lat), 0);
  487. //map.setCenter(new SuperMap.LonLat(0, 0), 1);
  488. //map.zoomToScale(1.0/1020090.0,true);
  489. //gis.script.layerloadover=true;
  490. gis.script.initOthenLayer();
  491. gis.script.initModifyFeature();
  492. //gis.script.loadboatLayer(boatLayer,[{id:'1',lon:119.66,lat:32.57},{id:'2',lon:119.56,lat:32.47}]);
  493. /*
  494. if(gis.script.loadcbdataService&&!document.getElementById("treecbdtdiviframe")){
  495. gis.script.loadcbdataService(gis.script.phase.init);
  496. }
  497. */
  498. //alert(treeType);
  499. //gis.script.initlayersconfig();
  500. //gis.script.switchtoLayer();
  501. gis.edit.init();
  502. //根据treeType切换树展示
  503. gis.script.switchTree(treeType);
  504. //gis.script.openiframetree();
  505. }});
  506. }
  507. /*
  508. * 加载船舶动态的树页面
  509. */
  510. gis.script.openiframetree = function() {
  511. //treecbdtdiviframe
  512. if(document.getElementById("treecbdtdiviframe")){
  513. document.getElementById("treecbdtdiviframe").src=contextPath+"/zygl/treeiframe.html?model=cbdtTree";
  514. }
  515. if(document.getElementById("treeaqjgdiviframe")){
  516. //document.getElementById("treeaqjgdiviframe").src=contextPath+"/zygl/treeiframe.html?model=aqjgTree";
  517. }
  518. }
  519. /*
  520. * 地图按钮控制事件
  521. */
  522. gis.script.buttonclickFun = function(id) {
  523. var imgObj=$("#"+id).find("img");
  524. if(imgObj&&imgObj.length){
  525. $.each(imgObj, function(i,val){
  526. var tua=$(val);
  527. var attrSrc=tua.attr('src');
  528. if(attrSrc&&attrSrc.indexOf("_no.png")<0){
  529. tua.attr('src',attrSrc.replace(".png","_no.png"));
  530. }else{
  531. tua.attr('src',attrSrc.replace("_no.png",".png"));
  532. }
  533. });
  534. }
  535. if(id=='tckz'||id=='cbss'){
  536. var lobj=$("#"+id+"list");
  537. if(lobj.is(':hidden')){
  538. for(var ik=0;ik<annarray.length;ik++){
  539. $("#"+annarray[ik]+"list").hide("slow");
  540. }
  541. lobj.show("slow");
  542. }else{
  543. lobj.hide("slow");
  544. }
  545. }else if(id=='txbj'){
  546. if(nowModifyFeature&&modifyFeature){
  547. if(gis.script.clickeditcommon({id:id,openid:'txsz'})){
  548. return;
  549. };
  550. //进入编辑地物状态
  551. //gis.script.removeLayer([modifyvectorLayer]);
  552. modifyFeature.activate();
  553. gis.script.toastmessage({text:'点击编辑区域后进入编辑状态。'});
  554. }else{
  555. gis.script.toastmessage({text:'请先选择可编辑区域。'});
  556. gis.script.buttonimgObjRestore(id);
  557. }
  558. }else if(id=='txsz'){
  559. if(modifyFeature){
  560. nowModifyFeature=null;
  561. if(modifyvectorLayer){
  562. modifyvectorLayer.removeAllFeatures();
  563. }
  564. if(locationLayer){
  565. locationLayer.removeAllFeatures();
  566. }
  567. if(gis.script.clickeditcommon({id:id,openid:'txbj'})){
  568. return;
  569. };
  570. drawPolygon.activate();
  571. gis.script.toastmessage({text:'可在地图上绘制地物。'});
  572. }
  573. }else if(id=='txsc'){
  574. if(nowModifyFeature&&modifyFeature){
  575. gis.script.clearAllDeactivate(true);
  576. gis.edit.delFeatureCompleted(nowModifyFeature);
  577. }else{
  578. gis.script.toastmessage({text:'请先选择可删除区域。'});
  579. }
  580. }else if(id=='txpstg'){
  581. gis.edit.syncDataLayer();
  582. }
  583. }
  584. gis.script.clickeditcommon = function(obj) {
  585. $("#txsc").css("display","none");
  586. gis.script.buttonimgObjRestore(obj.openid);
  587. gis.script.removeAllPopup();
  588. //如果是编辑状态就终止编辑
  589. /*
  590. if(modifyvectorLayer){
  591. var mvLayer=map.getLayer(modifyvectorLayer.id);
  592. if(mvLayer){
  593. gis.script.clearAllDeactivate();
  594. gis.script.toastmessage({text:'退出地物编辑状态。'});
  595. return;
  596. }
  597. }
  598. */
  599. var imgObj=$("#"+obj.id).find("img");
  600. var isend=false;
  601. if(imgObj&&imgObj.length){
  602. $.each(imgObj, function(i,val){
  603. var tua=$(val);
  604. var attrSrc=tua.attr('src');
  605. if(attrSrc&&attrSrc.indexOf("_no.png")<0){
  606. gis.script.clearAllDeactivate(true);
  607. gis.script.toastmessage({text:'退出地物编辑状态。'});
  608. isend = true;
  609. }
  610. });
  611. }
  612. if(isend){
  613. $("#txsc").css("display","");
  614. return isend;
  615. }
  616. //
  617. //编辑地物前地图定位到地物中心
  618. try{
  619. if(nowModifyFeature.attributes&&nowModifyFeature.attributes.editinfoobj){
  620. //console.log("1.nowModifyFeature",nowModifyFeature.attributes.editinfoobj);
  621. var editinfoobj=nowModifyFeature.attributes.editinfoobj;
  622. map.setCenter(new SuperMap.LonLat(editinfoobj.lon,editinfoobj.lat));
  623. }
  624. }catch(e){
  625. }
  626. gis.script.clearAllDeactivate(true);
  627. map.addLayer(modifyvectorLayer);
  628. }
  629. gis.script.buttonimgObjRestore = function(id) {
  630. var imgObj=$("#"+id).find("img");
  631. if(imgObj&&imgObj.length){
  632. $.each(imgObj, function(i,val){
  633. var tua=$(val);
  634. var attrSrc=tua.attr('src');
  635. if(attrSrc&&attrSrc.indexOf("_no.png")>0){
  636. tua.attr('src',attrSrc.replace("_no.png",".png"));
  637. }
  638. });
  639. }
  640. }
  641. /*
  642. * 信息提示
  643. */
  644. gis.script.toastmessage = function(obj) {
  645. var newObject = jQuery.extend(true,{
  646. sticky : false,
  647. position : 'top-right',
  648. type : 'notice',//type:notice,type:success
  649. closeText: '',
  650. stayTime : 2000,
  651. position : 'top-center'},obj);
  652. $().toastmessage('showToast',newObject);
  653. //console.log("...",newObject);
  654. }
  655. /*
  656. *清除编辑的feature
  657. */
  658. gis.script.clearAllDeactivate = function(drawisdeactivate) {
  659. if(modifyFeature){
  660. if(modifyvectorLayer){
  661. gis.script.removeLayer([modifyvectorLayer]);
  662. }
  663. if(drawisdeactivate){
  664. drawPolygon.deactivate();
  665. }
  666. modifyFeature.deactivate();
  667. }
  668. }
  669. /*
  670. * 创建可编辑图层
  671. */
  672. gis.script.initModifyFeature = function() {
  673. if(layerUserControl&&typeof(layerUserControl)!='undefined'){
  674. if(typeof(layerUserControl.modifyFeature)!='undefined'){
  675. if(layerUserControl.modifyFeature==false){
  676. return;
  677. }
  678. }
  679. }
  680. //alert(layerUserControl.modifyFeature);
  681. modifyFeature = new SuperMap.Control.ModifyFeature(modifyvectorLayer);
  682. drawPolygon = new SuperMap.Control.DrawFeature(modifyvectorLayer, SuperMap.Handler.Polygon);
  683. drawPolygon.events.on({"featureadded": function(drawGeometryArgs){
  684. gis.edit.addFeatureCompleted(drawGeometryArgs);
  685. }});
  686. map.addControl(drawPolygon);
  687. map.addControl(modifyFeature);
  688. }
  689. /*
  690. * 图层编辑完成后的触发函数
  691. */
  692. gis.script.editFeatureCompleted = function(event) {
  693. //alert($.confirm)
  694. $.confirm({
  695. title : '确认框',
  696. content : '确认保存编辑区域吗',
  697. confirm : function() {
  698. if(event){
  699. var feature = event.feature;
  700. gis.script.editgisFeatureService(feature);
  701. }
  702. },
  703. cancel: function(){
  704. //console.log('the user clicked cancel');
  705. gis.script.buttonimgObjRestore('txbj');
  706. gis.script.clearAllDeactivate();
  707. }
  708. });
  709. //gis.script.buttonimgObjRestore('txbj');
  710. //gis.script.clearAllDeactivate();
  711. }
  712. /*
  713. * 编辑信息写入
  714. */
  715. gis.script.editgisFeatureService = function(feature,newfeature) {
  716. gis.edit.progressdiv('show');
  717. if(feature&&feature.attributes
  718. &&feature.attributes.gisEditLayerinfoKey
  719. &&gis.script.isNum(feature.attributes.featureidval)){
  720. if(dataServices){
  721. gis.script.consolelog('dataServices',dataServices);
  722. for(var n in dataServices){
  723. var data=gisConfigBean.dataconfig[n];
  724. if(data&&feature.attributes.gisEditLayerinfoKey==data.gisLayerinfoKey){
  725. data=jQuery.extend(true, {}, data);
  726. data.datasetNames=data.datasetNames.split(",");
  727. data.fields=data.fields.split(",");
  728. data.url=data.url||defdataUrl;
  729. //console.log("data",data);
  730. if(data.fields&&data.fields.length){
  731. var attributes = feature.attributes;
  732. var attrNames = data.fields;
  733. var attrValues = [];
  734. for(var i=0;i<attrNames.length;i++){
  735. //alert(attrNames[i]);
  736. attrValues.push(attributes[attrNames[i]]);
  737. }
  738. if(feature&&newfeature&&feature.geometry&&newfeature.geometry){
  739. //var collectionGeometry = new SuperMap.Geometry.Collection([feature.geometry,newfeature.geometry]);
  740. //var cfeature=feature.clone();
  741. var multiPolygonArray=[];
  742. if(feature.geometry.components&&feature.geometry.components.length){
  743. for(var i=0;i<feature.geometry.components.length;i++){
  744. multiPolygonArray.push(feature.geometry.components[i]);
  745. }
  746. }
  747. multiPolygonArray.push(newfeature.geometry);
  748. /*
  749. if(newfeature.geometry.components&&newfeature.geometry.components.length){
  750. for(var i=0;i<newfeature.geometry.components.length;i++){
  751. multiPolygonArray.push(newfeature.geometry.components[i]);
  752. }
  753. }
  754. */
  755. console.log("multiPolygonArray",multiPolygonArray);
  756. var multiPolygon = new SuperMap.Geometry.MultiPolygon(multiPolygonArray);
  757. console.log("multiPolygon",multiPolygon);
  758. //console.log("multiPolygon.constructor",multiPolygon.constructor);
  759. feature.geometry=multiPolygon;
  760. }
  761. var features = {
  762. fieldNames:attrNames,
  763. fieldValues:attrValues,
  764. geometry:feature.geometry
  765. };
  766. //console.log("features",features);
  767. //alert(features.geometry.id+"--"+feature.attributes.featureidval)
  768. features.geometry.id = feature.attributes.featureidval;
  769. var editFeatureParameter = new SuperMap.REST.EditFeaturesParameters({
  770. features: [features],
  771. editType: SuperMap.REST.EditType.UPDATE
  772. });
  773. if(data.url&&data.datasetNames&&data.datasetNames.length==1){
  774. var dnames=data.datasetNames[0].split(":");
  775. if(dnames&&dnames.length==2){
  776. //console.log("dnames",dnames);
  777. var url=data.url+"/datasources/"+dnames[0]+"/datasets/"+dnames[1];
  778. //alert("http://127.0.0.1:8090/iserver/services/data-ST/rest/data/datasources/gkzyYS/datasets/L_GQ_PY"+"\n"+url);
  779. var editFeatureService = new SuperMap.REST.EditFeaturesService(url, {
  780. eventListeners: {
  781. "processCompleted": function(editFeaturesEventArgs) {
  782. gis.script.updateFeaturesProcessCompleted(editFeaturesEventArgs,feature);
  783. },
  784. "processFailed": gis.script.sqlProcessFailed
  785. }
  786. });
  787. editFeatureService.processAsync(editFeatureParameter);
  788. }
  789. }
  790. }
  791. break;
  792. }
  793. }
  794. }
  795. }
  796. gis.script.buttonimgObjRestore('txbj');
  797. gis.script.clearAllDeactivate();
  798. }
  799. /*
  800. * 提示用户地物编辑是否保存成功,并且刷新图层
  801. */
  802. gis.script.updateFeaturesProcessCompleted = function(editFeaturesEventArgs,feature) {
  803. gis.edit.progressdiv('none');
  804. gis.script.buttonimgObjRestore('txbj');
  805. gis.script.buttonimgObjRestore('txsz');
  806. $("#txsc").css("display","");
  807. if(editFeaturesEventArgs&&editFeaturesEventArgs.result.resourceInfo.succeed) {
  808. //alert("更新地物成功");
  809. gis.script.toastmessage({text:'更新地物成功。',type:'success'});
  810. gis.script.updateFeaturesloadLayerdata(editFeaturesEventArgs,feature);
  811. }else{
  812. gis.script.toastmessage({text:'更新地物失败。',type:'warning'});
  813. }
  814. gis.edit.syncgisStatus({editsucceed:editFeaturesEventArgs.result.resourceInfo.succeed});
  815. }
  816. //var uflldMap={"GK_BASIC_JSJY_GK_GQ":gqvectorLayer,"GK_BASIC_JSJY_JYR":jyrvectorLayer,"GK_BASIC_JSJY_JYR_MT":mtvectorLayer,"GK_BASIC_JSJY_JYR_BW":bwvectorLayer,"GK_BASIC_JSJY_GK_ZYQ":zyqvectorLayer};
  817. gis.script.updateFeaturesloadLayerdata2 = function(editFeaturesEventArgs,feature) {
  818. if(feature&&feature.attributes
  819. &&feature.attributes.gisEditLayerinfoKey){
  820. //console.log("feature",feature);//uflldLayerMap
  821. if(uflldLayerMap&&uflldLayerMap[feature.attributes.gisEditLayerinfoKey]){
  822. var tlayer=uflldLayerMap[feature.attributes.gisEditLayerinfoKey];
  823. if(dataServices){
  824. for(var n in dataServices){
  825. var data=gisConfigBean.dataconfig[n];
  826. if(data&&feature.attributes.gisEditLayerinfoKey==data.gisLayerinfoKey){
  827. data=jQuery.extend(true, {}, data);
  828. if(data.gisLayerinfoAttrKey&&feature.attributes[data.gisLayerinfoAttrKey]){
  829. /*
  830. var param={};
  831. param[data.gisLayerinfoAttrKey]=feature.attributes[data.gisLayerinfoAttrKey];
  832. */
  833. var fba=tlayer.getFeaturesByAttribute(data.gisLayerinfoAttrKey,feature.attributes[data.gisLayerinfoAttrKey]);
  834. if(fba&&fba.length==1){
  835. if(locationLayer){
  836. locationLayer.removeAllFeatures();
  837. var cloneFeature=feature.clone();
  838. var fillColor="#a4a5a7";//"#ffff00"
  839. var fillOpacity=0.5;
  840. cloneFeature.style = {
  841. fill:true,
  842. stroke:true,
  843. strokeColor: "#ffff00",
  844. strokeWidth: 3,
  845. //pointerEvents: "visiblePainted",
  846. //fillColor: "#a4a5a7",
  847. strokeDashstyle:"solid",
  848. fillColor: fillColor,
  849. fillOpacity: fillOpacity
  850. };
  851. locationLayer.addFeatures(cloneFeature);
  852. }
  853. tlayer.removeFeatures(fba);
  854. if(data.Model&&data.Model[gis.script.modelid]){
  855. var model=data.Model[gis.script.modelid];
  856. data.datasetNames=data.datasetNames.split(",");
  857. data.fields=data.fields.split(",");
  858. data.cachedata=model.cachedata||data.cachedata;
  859. data.zoom=model.zoom||data.zoom;
  860. data.processCompleted=model.processCompleted;
  861. data.onSelectOpenPopkey=model.onSelectOpenPopkey;
  862. data.modelObj=model;
  863. data.url=data.url||defdataUrl;
  864. data.attributeFilter=data.gisLayerinfoAttrKey+"="+feature.attributes[data.gisLayerinfoAttrKey];
  865. //console.log("data",data);
  866. gis.script.loadLayerFeaturesBySqls(data);
  867. }
  868. }
  869. }
  870. break;
  871. }
  872. }
  873. }
  874. }
  875. }
  876. }
  877. gis.script.updateFeaturesloadLayerdata = function(editFeaturesEventArgs,feature) {
  878. gis.edit.init();
  879. }
  880. /*
  881. * 创建地图中的所有所需的图层
  882. */
  883. gis.script.initOthenLayer = function() {
  884. gkvectorLayer = new SuperMap.Layer.Vector("gkvectorLayer");
  885. gqvectorLayer = new SuperMap.Layer.Vector("gqvectorLayer");
  886. zyqvectorLayer = new SuperMap.Layer.Vector("zyqvectorLayer");
  887. jyrvectorLayer = new SuperMap.Layer.Vector("jyrvectorLayer");
  888. locationLayer = new SuperMap.Layer.Vector("locationLayer");
  889. mtvectorLayer = new SuperMap.Layer.Vector("mtvectorLayer");
  890. bwvectorLayer = new SuperMap.Layer.Vector("bwvectorLayer");
  891. vectorLayer = new SuperMap.Layer.Vector("vector");
  892. boatLayer = new SuperMap.Layer.Vector("boatLayer");
  893. markersLayer = new SuperMap.Layer.Markers("Markers");
  894. //modifyvectorLayer = new SuperMap.Layer.Vector("modifyvectorLayer", {renderers: ["Canvas2"]});
  895. modifyvectorLayer = new SuperMap.Layer.Vector("modifyvectorLayer");
  896. modifyvectorLayer.events.on({"afterfeaturemodified": gis.script.editFeatureCompleted});
  897. uflldLayerMap={"GK_BASIC_JSJY_GK_GQ":gqvectorLayer,"GK_BASIC_JSJY_JYR":jyrvectorLayer,"GK_BASIC_JSJY_JYR_MT":mtvectorLayer,"GK_BASIC_JSJY_JYR_BW":bwvectorLayer,"GK_BASIC_JSJY_GK_ZYQ":zyqvectorLayer};
  898. gis.script.markersLayers.markersgkLayer=new SuperMap.Layer.Markers("markersgkLayer");
  899. gis.script.markersLayers.gzkMarkersLayer=new SuperMap.Layer.Markers("gzkMarkersLayer");
  900. gis.script.markersLayers.markersQskLayer=new SuperMap.Layer.Markers("markersQskLayer");
  901. //gis.script.selectallLayers.bwSelectvectorLayer=new SuperMap.Layer.Vector("bwSelectvectorLayer");
  902. if(gis.script.initboatonLayer){
  903. gis.script.initboatonLayer();
  904. }
  905. boatLayer.styleMap = new SuperMap.StyleMap({
  906. "default":new SuperMap.Style({
  907. fillColor:"#000000",
  908. strokeColor:"#000000",
  909. fillOpacity: 0.6,
  910. graphicZIndex:1
  911. })
  912. });
  913. gqvectorLayer.styleMap=new SuperMap.StyleMap({
  914. "default":new SuperMap.Style({
  915. fill:true,
  916. fillColor:"#ffffff",
  917. strokeColor:"#ff0000",
  918. strokeDashstyle:"longdashdot",
  919. fillOpacity: 0.1,
  920. graphicZIndex:1
  921. }),
  922. "select":{
  923. strokeColor: "#ffff00",
  924. strokeWidth: 2,
  925. strokeDashstyle:"solid",
  926. fillColor: "#a4a5a7",
  927. fillOpacity: 0.5,
  928. graphicZIndex:2
  929. }
  930. });
  931. zyqvectorLayer.styleMap=new SuperMap.StyleMap({
  932. "default":new SuperMap.Style({
  933. fill:true,
  934. fillColor:"#ffffff",
  935. strokeColor:"#ff0000",
  936. strokeDashstyle:"longdashdot",
  937. fillOpacity: 0.1,
  938. graphicZIndex:1
  939. }),
  940. "select":{
  941. strokeColor: "#ffff00",
  942. strokeWidth: 2,
  943. strokeDashstyle:"solid",
  944. fillColor: "#a4a5a7",
  945. fillOpacity: 0.5,
  946. graphicZIndex:2
  947. }
  948. });
  949. jyrvectorLayer.styleMap=new SuperMap.StyleMap({
  950. "default":new SuperMap.Style({
  951. fill:true,
  952. fillColor:"#ffffff",
  953. strokeColor:"#e36c09",
  954. strokeDashstyle:"dash",
  955. fillOpacity: 0.1,
  956. graphicZIndex:1
  957. }),
  958. "select":{
  959. strokeColor: "#ffff00",
  960. strokeWidth: 2,
  961. strokeDashstyle:"solid",
  962. fillColor: "#a4a5a7",
  963. fillOpacity: 0.5,
  964. graphicZIndex:2
  965. }
  966. });
  967. mtvectorLayer.styleMap=new SuperMap.StyleMap({
  968. "default":new SuperMap.Style({
  969. fill:true,
  970. fillColor:"#e4deea",
  971. strokeColor:"#a9a297",
  972. strokeDashstyle:"solid",
  973. strokeOpacity:0.8,
  974. strokeWidth:1,
  975. fillOpacity: 0.5,
  976. graphicZIndex:1
  977. }),
  978. "select":{
  979. strokeColor: "#ffff00",
  980. strokeWidth: 2,
  981. strokeDashstyle:"solid",
  982. fillColor: "#a4a5a7",
  983. fillOpacity: 0.5,
  984. graphicZIndex:2
  985. }
  986. });
  987. bwvectorLayer.styleMap=new SuperMap.StyleMap({
  988. "default":new SuperMap.Style({
  989. fill:true,
  990. fillColor:"#77a4dc",
  991. strokeColor:"#303030",
  992. strokeDashstyle:"solid",
  993. strokeOpacity:0.8,
  994. strokeWidth:1,
  995. fillOpacity: 0.1,
  996. graphicZIndex:1
  997. }),
  998. "select":{
  999. strokeColor: "#ffff00",
  1000. strokeWidth: 2,
  1001. strokeDashstyle:"solid",
  1002. //strokeOpacity:0.8,
  1003. fillColor: "#a4a5a7",
  1004. fillOpacity: 0.5,
  1005. graphicZIndex:2
  1006. }
  1007. });
  1008. var strategy = new SuperMap.Strategy.GeoText();
  1009. strategy.style = {
  1010. //fontColor:"#FF7F00",
  1011. fontColor:"#000000",
  1012. fontWeight:"bolder",
  1013. fontSize:"14px",
  1014. fill: false,
  1015. fillColor: "#FFFFFF",
  1016. fillOpacity: 1,
  1017. stroke: false,
  1018. strokeColor:"#8B7B8B"
  1019. };
  1020. labelLayer = new SuperMap.Layer.Vector("Label",{strategies: [strategy]});
  1021. var jyrstrategy = new SuperMap.Strategy.GeoText();
  1022. jyrstrategy.style = {
  1023. //fontColor:"#FF7F00",
  1024. fontColor:"#000000",
  1025. fontWeight:"bolder",
  1026. fontSize:"14px",
  1027. fill: false,
  1028. fillColor: "#FFFFFF",
  1029. fillOpacity: 1,
  1030. stroke: false,
  1031. strokeColor:"#8B7B8B"
  1032. };
  1033. jyrlabelLayer = new SuperMap.Layer.Vector("jyrlabelLayer",{strategies: [jyrstrategy]});
  1034. //gis.script.layerSelectFeature([gkvectorLayer,gqvectorLayer,jyrvectorLayer,bwvectorLayer,vectorLayer]);
  1035. //gis.script.layerSelectFeature([gkvectorLayer,gqvectorLayer,jyrvectorLayer,vectorLayer,boatLayer]);
  1036. gis.script.layerSelectFeature(gis.script.addboatvectorLayer([gkvectorLayer,gqvectorLayer,zyqvectorLayer,jyrvectorLayer,mtvectorLayer,bwvectorLayer,vectorLayer]));
  1037. //gis.script.loadLayerdata();
  1038. //map.addLayers([gkvectorLayer,gqvectorLayer,vectorLayer,markersLayer]);
  1039. map.addLayers([labelLayer,locationLayer,gkvectorLayer,vectorLayer,markersLayer]);
  1040. /*
  1041. var geoText = new SuperMap.Geometry.GeoText(119.66, 32.57,"中华人民共和国");
  1042. var geotextFeature = new SuperMap.Feature.Vector(geoText);
  1043. labelLayer.addFeatures([geotextFeature]);
  1044. */
  1045. gis.script.layerloadover=true;
  1046. }
  1047. gis.script.addboatvectorLayer = function(objs) {
  1048. if(gis.script.loadcbdataService&&gis.script.boatonLayer&&objs){
  1049. //console.log("CCC:",gis.script.boatonLayer);
  1050. for(var n in gis.script.boatonLayer){
  1051. objs.push(gis.script.boatonLayer[n]);
  1052. }
  1053. //console.log("CCC:",objs);
  1054. }
  1055. return objs
  1056. }
  1057. gis.script.initMarkersLayer = function() {
  1058. markersLayer = new SuperMap.Layer.Markers("Markers");
  1059. layer.events.on({"layerInitialized":function() {
  1060. map.addLayer(markersLayer);
  1061. if(gis.script.loadMarkersLayerdata){
  1062. gis.script.loadMarkersLayerdata();
  1063. }
  1064. }});
  1065. }
  1066. gis.script.initVectorLayer = function() {
  1067. vectorLayer = new SuperMap.Layer.Vector("vector");
  1068. layer.events.on({"layerInitialized": function() {
  1069. map.addLayer(vectorLayer);
  1070. gis.script.selectFeature();
  1071. }
  1072. });
  1073. }
  1074. gis.script.addLayer = function() {
  1075. map.addLayer(layer);
  1076. //出图,map.setCenter函数显示地图
  1077. var lonlat = layer.maxExtent.getCenterLonLat();
  1078. lon = lonlat.lon;
  1079. lat = lonlat.lat;
  1080. map.setCenter(new SuperMap.LonLat(lon, lat), 0);
  1081. //map.setCenter(new SuperMap.LonLat(0, 0), 1);
  1082. //map.zoomToScale(1.0/1020090.0,true);
  1083. gis.script.layerloadover=true;
  1084. }
  1085. /*
  1086. * 给Feature添加点击事件,Feature包括港区、经营人、码头、泊位、船舶
  1087. */
  1088. gis.script.layerSelectFeature = function(vlist){
  1089. if(vlist&&vlist.length){
  1090. var selectFeature= new SuperMap.Control.SelectFeature(vlist, {
  1091. //是否重复触发地物选择事件,只在单选非toggle模式下有效。默认为false,表示处于 选中状态的地物不在触发选择事件。
  1092. //repeat:true,
  1093. hover:true,
  1094. callbacks:{
  1095. click: function(feature){
  1096. //for(var cf in currentFeature){alert(cf);}
  1097. //alert(event.clientX+"--"+event.clientY);
  1098. //var lonlat=map.getLonLatFromPixel(new SuperMap.Pixel(event.clientX,event.clientY));
  1099. //alert(lonlat.lon.toFixed(5));
  1100. var eve=window.event;
  1101. gis.script.featurecallbacksclick(feature,eve);
  1102. if(feature){
  1103. var fillColor="#a4a5a7";//"#ffff00"
  1104. var fillOpacity=0.5;
  1105. var cloneFeature=feature.clone();
  1106. cloneFeature.style = {
  1107. fill:true,
  1108. stroke:true,
  1109. strokeColor: "#ffff00",
  1110. strokeWidth: 3,
  1111. //pointerEvents: "visiblePainted",
  1112. //fillColor: "#a4a5a7",
  1113. strokeDashstyle:"solid",
  1114. fillColor: fillColor,
  1115. fillOpacity: fillOpacity
  1116. };
  1117. locationLayer.addFeatures(cloneFeature);
  1118. nowModifyFeature=feature.clone();
  1119. /*
  1120. var mapCenter=map.getCenter();
  1121. if(mapCenter){
  1122. nowModifyFeature.attributes.editinfoobj={lon:mapCenter.lon,lat:mapCenter.lat,zoom:map.zoom};
  1123. //console.log("1.getCenter",map.getCenter());
  1124. console.log("1.nowModifyFeature.attributes.editinfoobj",nowModifyFeature.attributes.editinfoobj);
  1125. }
  1126. */
  1127. var centerLonLat = feature.geometry.getBounds().getCenterLonLat();
  1128. if(centerLonLat){
  1129. nowModifyFeature.attributes.editinfoobj={lon:centerLonLat.lon,lat:centerLonLat.lat,zoom:map.zoom};
  1130. //console.log("2.nowModifyFeature.attributes.editinfoobj",nowModifyFeature.attributes.editinfoobj);
  1131. }
  1132. modifyvectorLayer.removeAllFeatures();
  1133. modifyvectorLayer.addFeatures(nowModifyFeature);
  1134. }
  1135. }
  1136. },
  1137. onSelect: function(feature) {
  1138. //gis.script.featurecallbacksclick(feature);
  1139. }
  1140. });
  1141. map.addControl(selectFeature);
  1142. selectFeature.activate();
  1143. }
  1144. }
  1145. gis.script.featurecallbacksclick = function(feature,e){
  1146. //alert(feature.attributes.onSelectOpenPopkey);
  1147. if(locationLayer){
  1148. locationLayer.removeAllFeatures();
  1149. }
  1150. var chicken=$('#chicken');
  1151. chicken.remove();
  1152. if(feature.attributes&&feature.attributes.onSelectOpenPopkey&&gis.script[feature.attributes.onSelectOpenPopkey]){
  1153. //alert(feature.attributes.onSelectOpenPopkey);
  1154. gis.script[feature.attributes.onSelectOpenPopkey](feature,e);
  1155. }
  1156. /*
  1157. if(gis.script.gisidTo&&feature.attributes&&feature.attributes.gisidToKey){
  1158. var sinfo=gis.script.gisidTo[feature.attributes.gisidToKey];
  1159. var tempSize={width:320,height:155};
  1160. if(sinfo&&sinfo.ID){
  1161. //alert(sinfo.ID);
  1162. gis.script.jsonAjax({url:contextPath+"/zygl/queryGK.html",async:true,data:{id:sinfo.ID}},
  1163. function(data){
  1164. //alert(JSON.stringify(data));
  1165. if(data&&data.message){
  1166. //alert(data.message);
  1167. //alert(gis.script.popSize[feature.attributes.gisLayerinfoKey]);
  1168. var popup = gis.anchored.popupHtml(feature.geometry.getBounds().getCenterLonLat(),gis.script.popSize[feature.attributes.gisLayerinfoKey]||tempSize,data.message);
  1169. gis.anchored.addPopup(map,popup);
  1170. }
  1171. });
  1172. }else{
  1173. var popup = gis.anchored.popupHtml(feature.geometry.getBounds().getCenterLonLat(),tempSize,
  1174. gis.anchored.tohtml(gis.anchored.nvlinfo({poptitle:"&nbsp;",portName:feature.attributes.NAME||feature.attributes.name||""})));
  1175. gis.anchored.addPopup(map,popup);
  1176. }
  1177. }
  1178. */
  1179. }
  1180. gis.script.selectFeature = function(){
  1181. /*
  1182. var callbacks={
  1183. click: function(currentFeature){
  1184. //for(var cf in currentFeature){alert(cf);}
  1185. alert(cf.data);
  1186. }
  1187. };
  1188. var selectFeature = new SuperMap.Control.SelectFeature(vectorLayer,
  1189. {
  1190. callbacks: callbacks
  1191. });
  1192. */
  1193. var selectFeature= new SuperMap.Control.SelectFeature(vectorLayer, {
  1194. //是否重复触发地物选择事件,只在单选非toggle模式下有效。默认为false,表示处于 选中状态的地物不在触发选择事件。
  1195. repeat:true,
  1196. onSelect: function(feature) {
  1197. /*
  1198. selecedtBus = feature;
  1199. popup = new SuperMap.Popup("chicken",
  1200. selecedtBus.geometry.getBounds().getCenterLonLat(),
  1201. new SuperMap.Size(300,42),
  1202. "", null, true);
  1203. selecedtBus.popup = popup;
  1204. map.addPopup(popup);
  1205. */
  1206. //console.log('feature:',feature);
  1207. //alert(feature.id);
  1208. var popup = gis.anchored.popup(feature.geometry.getBounds().getCenterLonLat(),{});
  1209. gis.anchored.addPopup(map,popup);
  1210. }
  1211. }
  1212. );
  1213. map.addControl(selectFeature);
  1214. selectFeature.activate();
  1215. /*
  1216. var selectFeature= new SuperMap.Control.SelectFeature(vectorLayer, {
  1217. onSelect: function(feature) {
  1218. selecedtBus = feature;
  1219. popup = new SuperMap.Popup("chicken",
  1220. selecedtBus.geometry.getBounds().getCenterLonLat(),
  1221. new SuperMap.Size(300,42),
  1222. "dddddddddddd", null, true);
  1223. selecedtBus.popup = popup;
  1224. map.addPopup(popup);
  1225. //var popup = gis.anchored.popup(feature.geometry.getBounds().getCenterLonLat(),{});
  1226. //gis.anchored.addPopup(map,popup);
  1227. },
  1228. //onUnselect: function() {alert(2)}
  1229. }
  1230. );
  1231. map.addControl(selectFeature);
  1232. selectFeature.activate();
  1233. */
  1234. }
  1235. /*
  1236. * 给Marker添加点击事件,Marker包括港口
  1237. */
  1238. gis.script.addMarker = function(obj){
  1239. var size;
  1240. var offset;
  1241. var mattr=gis.script.markerAttr[obj.type];
  1242. if(!mattr){
  1243. size= new SuperMap.Size(obj.w,obj.h);
  1244. offset=new SuperMap.Pixel(-(size.w/2), -(size.h/2));
  1245. gis.script.markerAttr[obj.type]={};
  1246. gis.script.markerAttr[obj.type].size=size;
  1247. gis.script.markerAttr[obj.type].offset=offset;
  1248. }else{
  1249. size=gis.script.markerAttr[obj.type].size;
  1250. offset=gis.script.markerAttr[obj.type].offset
  1251. }
  1252. if(size&&offset){
  1253. //alert(size);
  1254. var icon = new SuperMap.Icon(obj.src, size, offset);
  1255. var marker = new SuperMap.Marker(new SuperMap.LonLat(obj.lon,obj.lat),icon);
  1256. //添加覆盖物到标记图层
  1257. //markersLayer.addMarker(marker);
  1258. gis.script.addMarkerLayer(obj,marker);
  1259. //eval("(showMarkerInfo())")
  1260. if(!gis.script.isBlank(obj.functionName)){
  1261. marker.events.on({"click":function(e) {
  1262. //alert(e);alert(event);
  1263. //alert(this);alert(event);
  1264. var eve=window.event||e;
  1265. obj.events=this;
  1266. //gis.script[obj.functionName](obj.feature,event);
  1267. gis.script[obj.functionName](obj.feature,eve);
  1268. }});
  1269. }
  1270. }
  1271. }
  1272. gis.script.addMarkerLayer = function(obj,marker){
  1273. if(!gis.script.isBlank(obj.marktypename)){
  1274. //alert(obj.marktypename);
  1275. //gis.script.markersLayers
  1276. /*
  1277. if(!gis.script.markersLayers[obj.marktypename]){
  1278. gis.script.markersLayers[obj.marktypename] = new SuperMap.Layer.Markers(obj.marktypename);
  1279. if(obj.defshow&&obj.defshow=="true"){
  1280. map.addLayer(gis.script.markersLayers[obj.marktypename]);
  1281. }
  1282. gis.script.markersLayersInfo[obj.marktypename]=obj;
  1283. }
  1284. */
  1285. //alert(gis.script.markersLayers[obj.marktypename]);
  1286. //alert(obj.marktypename);
  1287. //console.log('obj.marktypename:',obj.marktypename);
  1288. gis.script.markersLayers[obj.marktypename].addMarker(marker);
  1289. }
  1290. }
  1291. gis.script.showMarkerInfo = function(obj){
  1292. //alert(JSON.stringify(obj));
  1293. //var popup = gis.anchored.popup(obj.events.getLonLat(),{});
  1294. var popup = gis.anchored.popupHtml(obj.events.getLonLat(),{width:320,height:155},
  1295. gis.anchored.tohtml(gis.anchored.portinfo({portName:obj.name,portNumber:2,anchorageNumber:2,chanceNumber:16})));
  1296. gis.anchored.addPopup(map,popup);
  1297. }
  1298. gis.script.getLayersInfo = function(){
  1299. var getLayersInfoService = new SuperMap.REST.GetLayersInfoService(gis.script.url);
  1300. getLayersInfoService.events.on({ "processCompleted": gis.script.processCompletedlayers});
  1301. getLayersInfoService.processAsync();
  1302. }
  1303. gis.script.processCompletedlayers = function(e){
  1304. //gis.script.consolelog('e:',e);
  1305. if(e&&e.result&&e.result.subLayers){
  1306. var layers=e.result.subLayers.layers;
  1307. for (var j = 0; j <layers.length; j++) {
  1308. gis.script.subLayers.push(layers[j])
  1309. //alert(layers[j]);
  1310. //alert("<input type='checkbox' checked="+layers[j].visible+"/><span>"+layers[j].name+"</span>");
  1311. $("<input type='checkbox' class='checkboxSel' value='"+layers[j].name+"' "+(layers[j].visible?"checked=true":"")+"/><span>"+layers[j].name+"</span>").addClass("popupSpan").appendTo($("#layers"));
  1312. //break;
  1313. }
  1314. }
  1315. //alert("-->"+$("#layers .checkboxSel").length)
  1316. var cb=$("#layers .checkboxSel");
  1317. cb.click(function () {
  1318. alert(layer.params.layersID)
  1319. var str=new Array();
  1320. str.push("[");
  1321. $.each(cb, function(i, item){
  1322. if(eval(item.checked) == true){
  1323. str.push(args);
  1324. }
  1325. });
  1326. str.push(",]");
  1327. alert(str.length+"-->"+str.join("").replace(",]","]"));
  1328. //layer.redraw();
  1329. });
  1330. //样式为BootStrap框架设置
  1331. /*
  1332. cb.hover(function () {
  1333. $(this).addClass("label-success");
  1334. }, function () {
  1335. $(this).removeClass("label-success");
  1336. });
  1337. */
  1338. gis.script.createTempLayer();
  1339. }
  1340. gis.script.createTempLayer = function(){
  1341. var cb=$("#layers .checkboxSel");
  1342. var layerStatusParameters = new SuperMap.REST.SetLayerStatusParameters();
  1343. layerStatusParameters = (function(parameters) {
  1344. //alert(parameters);
  1345. $.each(cb, function(i, item){
  1346. var layerStatus = new SuperMap.REST.LayerStatus();
  1347. layerStatus.layerName = item.value;
  1348. layerStatus.isVisible = eval(item.checked);
  1349. //alert(layerStatus.layerName+"--"+layerStatus.isVisible)
  1350. parameters.layerStatusList.push(layerStatus);
  1351. });
  1352. //设置资源在服务端保存的时间,单位为分钟,默认为10
  1353. parameters.holdTime = 30;
  1354. return parameters;
  1355. })(layerStatusParameters);
  1356. var setLayerStatusService = new SuperMap.REST.SetLayerStatusService(gis.script.url);
  1357. setLayerStatusService.events.on({ "processCompleted": function(createTempLayerEventArgs){
  1358. tempLayerID = createTempLayerEventArgs.result.newResourceID;
  1359. //创建 TiledDynamicRESTLayer
  1360. //layer = new SuperMap.Layer.TiledDynamicRESTLayer("World", gis.script.url, {transparent: true, cacheEnabled: false, redirect: true, layersID: tempLayerID}, {maxResolution: "auto", bufferImgCount: 0});
  1361. //layer.bufferImgCount = 0;
  1362. //layer.events.on({"layerInitialized": gis.script.addLayer});
  1363. layer = new SuperMap.Layer.TiledDynamicRESTLayer("World", gis.script.url, {transparent: true, cacheEnabled: false, redirect: true, layersID: tempLayerID},{maxResolution:"auto", bufferImgCount: 0});
  1364. layer.bufferImgCount = 0;
  1365. layer.events.on({"layerInitialized": gis.script.addLayer});
  1366. }});
  1367. setLayerStatusService.processAsync(layerStatusParameters);
  1368. }
  1369. gis.script.initLayersInfo = function() {
  1370. gis.script.getLayersInfo();
  1371. }
  1372. gis.script.setMapCenter = function(info){
  1373. //alert(info.zoomSize);
  1374. if(info&&typeof(info.lon)!="undefined"&&typeof(info.lat)!="undefined"){
  1375. map.setCenter(new SuperMap.LonLat(info.lon, info.lat),info.zoomSize);
  1376. issetCenter=true;
  1377. }
  1378. }
  1379. gis.script.setMaplocationLayer = function(feature,o){
  1380. locationLayer.removeAllFeatures();
  1381. if(feature){
  1382. locationLayer.addFeatures(feature);
  1383. try{
  1384. if(o.labelfield&&feature.attributes[o.labelfield]){
  1385. labelLayer.removeAllFeatures();
  1386. var geoText = new SuperMap.Geometry.GeoText(centerLonLat.lon, centerLonLat.lat,feature.attributes[o.labelfield]);
  1387. var geotextFeature = new SuperMap.Feature.Vector(geoText);
  1388. labelLayer.addFeatures([geotextFeature]);
  1389. }
  1390. }catch(e){
  1391. }
  1392. }
  1393. }
  1394. var switchto=false;
  1395. gis.script.testSwitchto = function(){
  1396. var uri;
  1397. if(switchto){
  1398. uri="/znjg/zygl/treeiframe.html?model=gis&treeType=ty"
  1399. }else{
  1400. uri="/znjg/zygl/treeiframe.html?model=gis&treeType=cbdt"
  1401. }
  1402. //alert(gis.script.queryString(uri,"treeType"));
  1403. var o={menuurl:uri}
  1404. gis.script.switchto(o);
  1405. switchto=!switchto;
  1406. }
  1407. /*
  1408. * 切换专辑图
  1409. */
  1410. gis.script.switchto = function(o){
  1411. if(o&&o.menuurl){
  1412. if(!gis.script.layerloadover){
  1413. window.location.href=o.menuurl;
  1414. return;
  1415. }
  1416. var ttype=gis.script.queryString(o.menuurl,"treeType");
  1417. gis.script.switchTree(ttype);
  1418. }
  1419. //alert($(".treedivClass").length);
  1420. }
  1421. gis.script.switchTree = function(ttype){
  1422. treeType=ttype;
  1423. if(treeType){
  1424. //alert(treeType);
  1425. $.each($(".treedivClass"), function(i,val){
  1426. var ua=$(val);
  1427. ua.css("display","none");
  1428. });
  1429. $("#tree"+treeType+"div").css("display","");
  1430. }
  1431. gis.script.initlayersconfig();
  1432. //gis.script.settrendsLayer("gkMarkLayer","false");
  1433. //gis.script.settrendsLayer("gqvectorLayer","false");
  1434. //gis.script.settrendsLayer("boatonLayers",'true');
  1435. gis.script.switchtoLayer();
  1436. gis.script.switchtckzTree();
  1437. gis.script.switchcbsslist(ttype);
  1438. }
  1439. gis.script.switchcbsslist = function(ttype){
  1440. if(ttype=='cbdt'){
  1441. $("#cbss").css("display","");
  1442. }else{
  1443. $("#cbss").css("display","none");
  1444. $("#cbsslist").css("display","none");
  1445. }
  1446. //$("#txbj").css("display","");
  1447. if(layerUserControl&&typeof(layerUserControl)!='undefined'){
  1448. if(typeof(layerUserControl.modifyFeature)!='undefined'){
  1449. if(layerUserControl.modifyFeature==true){
  1450. $("#txbj").css("display","");
  1451. $("#txsz").css("display","");
  1452. $("#txsc").css("display","");
  1453. $("#txpstg").css("display","");
  1454. }
  1455. }
  1456. }
  1457. var kk=0;
  1458. for(var ii=0;ii<annarray.length;ii++){
  1459. var annobj=$("#"+annarray[ii]);
  1460. if(annobj&&annobj.length){
  1461. //annobj.css("top",bgrounddiv.offset().top+10);
  1462. //annobj.css("right",32+52*(ii+1));
  1463. //alert(annobj.css('display'));
  1464. if(annobj.css('display')&&annobj.css('display')!='none'){
  1465. annobj.css("right",32+52*(kk+1));
  1466. kk=kk+1;
  1467. }
  1468. }
  1469. }
  1470. }
  1471. gis.script.switchtckzTree = function(){
  1472. var iframepage=document.getElementById("treetckzdiviframe");
  1473. if(iframepage){
  1474. if(!gis.script.tckztreeloadover){
  1475. iframepage.src=contextPath+"/zygl/treeiframe.html?model=tckzTree";
  1476. }else{
  1477. if(iframepage.contentWindow){
  1478. iframepage.contentWindow.gis.tree.inittreeCheck("tree");
  1479. }
  1480. }
  1481. }
  1482. }
  1483. /*
  1484. * 获取参数
  1485. */
  1486. gis.script.queryString = function (uri,val){
  1487. //var uri = window.location.search;
  1488. var re = new RegExp("" +val+ "=([^\&\?]*)", "ig");
  1489. return ((uri.match(re))?(uri.match(re)[0].substr(val.length+1)):null);
  1490. }
  1491. $(document).ready(function() {
  1492. if(document.getElementById("treetydiviframe")){
  1493. //${contextPath}/zygl/gisiframe.html?model=commonTree
  1494. document.getElementById("treetydiviframe").src=contextPath+"/zygl/treeiframe.html?model=commonTree";
  1495. }
  1496. gis.script.init();
  1497. });