sideNav.js 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796
  1. /**
  2. * [ONEMAP.M.side_nav]
  3. * @return {[object]}
  4. */
  5. define([
  6. 'html!templates/sideNavMapControl',
  7. 'modDir/service/cartodbParse',
  8. 'css!styles/sideNavMapControl',
  9. 'modDir/gcms/gcmsEvents'
  10. ], function (tplSideNavMapControl, cartodbParseF) {
  11. /**
  12. * 模块数据 用于数据存储和外部调用
  13. * @type {Object}
  14. * 数据存放
  15. */
  16. var modValue = {
  17. currentOverLayerGuid: null,
  18. DEMguid: null
  19. }
  20. var status = {
  21. showSideNavMapControl: false,
  22. curMap2Dstatus: true,
  23. isAdd3d: false,
  24. sideNavLock: true
  25. }
  26. var overLayerOpacityControl;
  27. function init() {
  28. setLayout();
  29. bindEvent();
  30. setDixingList();
  31. //setIGList();
  32. subscribe();
  33. };
  34. function setLayout() {
  35. $(tplSideNavMapControl).appendTo($("#sideNav .cover-content"));
  36. if (ONEMAP.D.globalSettingData) {
  37. switch (ONEMAP.D.globalSettingData.baseMap2D.type) {
  38. case 1:
  39. $("#mapBaseLayerControl .choosemap .map-list li[mId='gm']").children('.biankuang').addClass('mapchoose');
  40. break;
  41. case 2:
  42. $("#mapBaseLayerControl .choosemap .map-list li[mId='gr']").children('.biankuang').addClass('mapchoose');
  43. $('#mapBaseLayerControl .show-name').show();
  44. $("#sideNavMapControl .abtn-show-name").addClass('active');
  45. break;
  46. case 3:
  47. $("#mapBaseLayerControl .choosemap .map-list li[mId='gt']").children('.biankuang').addClass('mapchoose');
  48. break;
  49. }
  50. }
  51. $("#sideNavMapControl .ii-body").mCustomScrollbar({
  52. scrollInertia: 1000
  53. });
  54. if (navigator.userAgent.toLowerCase().match(/chrome/) != null ||
  55. navigator.userAgent.toLowerCase().match(/firefox/) != null) {
  56. $('#map23dChangeNav .change_2d').remove();
  57. $('#map23dChangeNav .change_3d').remove();
  58. }
  59. }
  60. function layoutResize() {};
  61. function changemapStyle(mapStyle) {
  62. if (mapStyle == '2D') {
  63. if (!map23DData.display.map2D) {
  64. show2dMap();
  65. }
  66. }
  67. if (mapStyle == '3D') {
  68. if (!map23DData.display.map3D) {
  69. show3dMap();
  70. }
  71. }
  72. }
  73. function subscribe() {
  74. ONEMAP.C.publisher.subscribe(changemapStyle, 'layout::mapStyle');
  75. ONEMAP.C.publisher.subscribe(closeSideNav, 'layout::sideBar');
  76. ONEMAP.C.publisher.subscribe(closeSideNav, 'mapChange');
  77. ONEMAP.C.publisher.subscribe(controlPointShijing, 'mapChange23D');
  78. };
  79. function controlPointShijing(zoom) {
  80. if (zoom > 13) {
  81. $("#sideNavMapControl .abtn-show-pointshijing").show();
  82. } else {
  83. $("#sideNavMapControl .abtn-show-pointshijing").hide();
  84. $("#sideNavMapControl .abtn-show-pointshijing").removeClass('active');
  85. ONEMAP.C.publisher.publish('hide', 'pointShijing');
  86. }
  87. }
  88. function closeSideNav(options) {
  89. if (!status.sideNavLock) {
  90. $('#sideNavMapControl').hide();
  91. $('#mapLayerControl').removeClass('open');
  92. status.showSideNavMapControl = false;
  93. changeMapLayerControl();
  94. }
  95. };
  96. //地图导航栏图标变化
  97. function changeMapLayerControl() {
  98. return
  99. }
  100. function show2dMap() {
  101. map23DControl.show2D();
  102. //ONEMAP.C.publisher.publish('showGM', 'layout::mapStyle');
  103. $("#topBar .total-content .tools-tool23Dchange").removeClass('map3D')
  104. $("#topBar .total-content .tools-tool23Dchange").addClass('map2D');
  105. $($(".leaflet-control-scale-line")[0]).show();
  106. if (!status.curMap2Dstatus) {
  107. status.curMap2Dstatus = true;
  108. ONEMAP.M.toolsBar.layoutResize();
  109. $("#chooseBg .choosemap").removeClass('tDClass');
  110. }
  111. ONEMAP.C.publisher.publish('2d', 'change23D');
  112. map2DViewer.map.fire('mainLayer:addLayer');
  113. }
  114. function show3dMap() {
  115. $("#layerControlMenu").bind("mousemove", function () {
  116. if (parseFloat($(this).css("top")) > 0) {
  117. $(this).css("bottom", "auto");
  118. }
  119. })
  120. if (Detector.webgl) {
  121. map23DControl.show3D();
  122. } else {
  123. ONEMAP.C.publisher.publish({
  124. type: "warning",
  125. message: "本浏览器不支持webGL,请更换重试!"
  126. }, 'noteBar::add');
  127. return
  128. }
  129. //ONEMAP.C.publisher.publish('showGH', 'layout::mapStyle');
  130. $("#topBar .total-content .tools-tool23Dchange").removeClass('map2D')
  131. $("#topBar .total-content .tools-tool23Dchange").addClass('map3D');
  132. $($(".leaflet-control-scale-line")[0]).hide();
  133. if (!status.tdmapStatus) {
  134. modValue.mapChangeTimer = (new Date()).getTime();
  135. if (!status.isAdd3d) {
  136. ONEMAP.C.publisher.publish('3D', 'add3d');
  137. status.isAdd3d = true;
  138. }
  139. // setTimeout(function () {
  140. // // locaSpaceMap.attachEvent('FireSceneMouseMove', FireSceneMouseMove)
  141. // }, 2000)
  142. status.tdmapStatus = true;
  143. }
  144. if (status.curMap2Dstatus) {
  145. status.curMap2Dstatus = false;
  146. ONEMAP.M.toolsBar.layoutResize();
  147. $("#sideLink3dData").css({
  148. display: 'inline'
  149. });
  150. $("#chooseBg .choosemap").addClass('tDClass');
  151. $("#sideNavMapControl .abtn-show-DEMTD").show();
  152. }
  153. ONEMAP.C.publisher.publish('3d', 'change23D');
  154. }
  155. function bindEvent() {
  156. //单点实景控制
  157. $("#sideNavMapControl .abtn-show-pointshijing").bind('click', function () {
  158. if ($("#sideNavMapControl .abtn-show-pointshijing").hasClass('active')) {
  159. $("#sideNavMapControl .abtn-show-pointshijing").removeClass('active');
  160. ONEMAP.C.publisher.publish('hide', 'pointShijing');
  161. } else {
  162. $("#sideNavMapControl .abtn-show-pointshijing").addClass('active');
  163. ONEMAP.C.publisher.publish('show', 'pointShijing');
  164. };
  165. })
  166. //控制地图导航栏显隐
  167. $('#mapLayerControl').bind('click', function () {
  168. if (!status.showSideNavMapControl) {
  169. $('#sideNavMapControl').show();
  170. $(this).addClass('open');
  171. status.showSideNavMapControl = true;
  172. } else {
  173. $('#sideNavMapControl').hide();
  174. $(this).removeClass('open');
  175. status.showSideNavMapControl = false;
  176. }
  177. changeMapLayerControl();
  178. });
  179. //专题图层或重要目标与事件操作
  180. $(".userThematic-ii-header h4").bind('click', function () {
  181. $("#userThematic").show();
  182. $("#userIG").hide();
  183. $(".userThematic-ii-header").removeClass('nochoose');
  184. $(".userIG-ii-header").addClass('nochoose');
  185. })
  186. $(".userIG-ii-header h4").bind('click', function () {
  187. $("#userIG").show();
  188. $("#userThematic").hide();
  189. $(".userThematic-ii-header").addClass('nochoose');
  190. $(".userIG-ii-header").removeClass('nochoose');
  191. })
  192. $(".userThematic-ii-header .itemControl").bind('click', function () {
  193. $("#userThematic").show();
  194. $("#userThematic").find('.sectionbg').addClass('open');
  195. $("#userThematic").find('.linkContent').show();
  196. $(".userThematic-ii-header").removeClass('nochoose');
  197. $(".userIG-ii-header").addClass('nochoose');
  198. $("#userIG").find('.sectionbg').removeClass('open');
  199. $("#userIG").find('.linkContent').hide();
  200. $("#userIG").hide();
  201. })
  202. $(".userIG-ii-header .itemControl").bind('click', function () {
  203. $("#userIG").show();
  204. $("#userIG").find('.sectionbg').addClass('open');
  205. $("#userIG").find('.linkContent').show();
  206. $(".userThematic-ii-header").addClass('nochoose');
  207. $(".userIG-ii-header").removeClass('nochoose');
  208. $("#userThematic").find('.sectionbg').removeClass('open');
  209. $("#userThematic").find('.linkContent').hide();
  210. $("#userThematic").hide();
  211. })
  212. //显示2D
  213. $('#map23dChangeNav .change_2d').bind('click', function () {
  214. $(this).addClass('current');
  215. $('#map23dChangeNav .change_3d').removeClass('current');
  216. show2dMap();
  217. changeMapLayerControl();
  218. })
  219. //显示3D
  220. $('#map23dChangeNav .change_3d').bind('click', function () {
  221. $(this).addClass('current');
  222. $('#map23dChangeNav .change_2d').removeClass('current');
  223. show3dMap();
  224. changeMapLayerControl();
  225. })
  226. //显示经纬网
  227. $("#sideNavMapControl .abtn-show-STLayer").bind("click", function () {
  228. if ($(this).hasClass('active')) {
  229. ONEMAP.C.publisher.publish('hide', 'mapHolder::STLatLngLayer');
  230. $(this).removeClass('active');
  231. } else {
  232. ONEMAP.C.publisher.publish('show', 'mapHolder::STLatLngLayer');
  233. $(this).addClass('active');
  234. }
  235. });
  236. //显示地名层
  237. $("#sideNavMapControl .abtn-show-name").bind("click", function () {
  238. if ($(this).hasClass('active')) {
  239. map2DViewer.setDefaultTileLayer('gr');
  240. if (map3DViewer.inited && modValue.NAMEguid) {
  241. map3DViewer.layers[modValue.NAMEguid].Visible = false;
  242. }
  243. $(this).removeClass('active');
  244. } else {
  245. map2DViewer.setDefaultTileLayer('gr');
  246. if (map3DViewer.inited && modValue.NAMEguid) {
  247. map3DViewer.layers[modValue.NAMEguid].Visible = true;
  248. }
  249. $(this).addClass('active');
  250. }
  251. })
  252. //显示三维DEM
  253. $("#sideNavMapControl .abtn-show-DEMTD").bind("click", function () {
  254. if ($(this).hasClass('active')) {
  255. map3DViewer.layers[modValue.DEMguid].Visible = false;
  256. $(this).removeClass('active');
  257. } else {
  258. map3DViewer.layers[modValue.DEMguid].Visible = true;
  259. $(this).addClass('active');
  260. }
  261. })
  262. //专题地图更多
  263. $(".morethematicmap").bind("click", function () {
  264. require(['modDir/atlas/atlasList'], function (atlasList) {
  265. atlasList.init();
  266. });
  267. });
  268. //GCMS
  269. $("#sideNavMapControl .btn-gcms").bind("click", function () {
  270. require(['modDir/gcms/gcmsNav'], function (gcmsNav) {
  271. gcmsNav.init();
  272. });
  273. });
  274. //用户手册
  275. $("#sideNavMapControl .abtn-user-help").bind('click', function () {
  276. require(['modDir/user/userHelp'], function (userHelp) {
  277. userHelp.init();
  278. });
  279. });
  280. //海量地图库
  281. $("#sideNavMapControl .btn-atals-labrary").bind("click", function () {
  282. var windowOpen = window.open();
  283. var openUrl = onemapUrlConfig.atlasLibraryUrl;
  284. windowOpen.location = openUrl;
  285. });
  286. //更多专题地图
  287. $('.side-nav-map-control-content .info-content .abtn-more').bind('click', function () {
  288. //开启侧栏
  289. ONEMAP.C.publisher.publish('show', 'layout::sideBar');
  290. if ($(".userThematic-ii-header").hasClass('nochoose')) {
  291. require(['modDir/gcms/gcmsNav'], function (gcmsNav) {
  292. gcmsNav.init();
  293. });
  294. } else {
  295. require(['modDir/atlas/atlasList'], function (atlasList) {
  296. atlasList.init();
  297. });
  298. }
  299. });
  300. //登录系统
  301. $('#sideNavMapControl .login_in').bind('click', function () {
  302. ONEMAP.C.gotoLogin();
  303. });
  304. //退出系统
  305. $("#sideNavMapControl .login_out").bind('click', function () {
  306. ONEMAP.C.logout();
  307. });
  308. $("#sideNavMapControl .sideNavLock").bind('click', function () {
  309. if ($('#sideNavMapControl .sideNavLock').hasClass('close')) {
  310. $('#sideNavMapControl .sideNavLock').removeClass('close');
  311. status.sideNavLock = false;
  312. } else {
  313. $('#sideNavMapControl .sideNavLock').addClass('close');
  314. status.sideNavLock = true;
  315. }
  316. })
  317. //管理面板入口
  318. $('.manage-link .show-link').bind('click', function () {
  319. $('#manageLink').toggle('fast');
  320. });
  321. $('#manageLink .go-user-manage').bind('click', function () {
  322. $('#manageLink').toggle('fast');
  323. var windowOpen = window.open();
  324. var openUrl = onemapUrlConfig.userManageSiteUrl;
  325. windowOpen.location = openUrl;
  326. });
  327. $('#manageLink .go-gcms').bind('click', function () {
  328. $('#manageLink').toggle('fast');
  329. var windowOpen = window.open();
  330. var openUrl = onemapUrlConfig.gcmsSiteUrl;
  331. windowOpen.location = openUrl;
  332. });
  333. $('#manageLink .go-hmdms').bind('click', function () {
  334. $('#manageLink').toggle('fast');
  335. var windowOpen = window.open();
  336. var openUrl = onemapUrlConfig.hmdmsSiteUrl;
  337. windowOpen.location = openUrl;
  338. });
  339. }
  340. function FireSceneMouseMove(e, sender, x, y) {
  341. var point2d = locaSpaceMap.CreatePoint2d();
  342. point2d.SetValue(x, y);
  343. point2d = locaSpaceMap.Globe.ScreenToScene(point2d);
  344. var latlng = {
  345. lat: point2d.Y,
  346. lng: point2d.X
  347. };
  348. var nLatlng = L.Util.formatHMS(latlng);
  349. $('#pointInfo').empty().append('经度:' + nLatlng.lng + ' 纬度:' + nLatlng.lat);
  350. if ((new Date()).getTime() - modValue.mapChangeTimer > 6000) {
  351. modValue.mapChangeTimer = (new Date()).getTime();
  352. ONEMAP.C.publisher.publish({}, 'mapChange');
  353. ONEMAP.C.publisher.publish({}, 'layout::sideBar');
  354. }
  355. var cameraState = locaSpaceMap.Globe.CameraState;
  356. if (cameraState.Distance < 80000) {
  357. if (modValue.countryBoundaryLayer) {
  358. if (modValue.countryBoundaryLayer.Visible) {
  359. modValue.countryBoundaryLayer.Visible = false;
  360. modValue.provinceLayer.Visible = false;
  361. //map3DViewer.layers[modValue.boundaryGuid].Visible = false;
  362. }
  363. }
  364. } else {
  365. if (modValue.countryBoundaryLayer) {
  366. if (!modValue.countryBoundaryLayer.Visible) {
  367. modValue.countryBoundaryLayer.Visible = true;
  368. modValue.provinceLayer.Visible = true;
  369. //map3DViewer.layers[modValue.boundaryGuid].Visible = true;
  370. }
  371. }
  372. }
  373. }
  374. //添加地形图组
  375. function setDixingList() {
  376. var category = ONEMAP.D.globalSettingData.map2DThematicCategory;
  377. for (var i = 0; i < category.length; i++) {
  378. var liHtml = $('<section class="item"><div class="sectionbg"><span class="translate">' + category[i] + '</span></div></section>')
  379. var linkcontent = $('<ul class="linkContent" style="display:none"></ul>');
  380. $(ONEMAP.D.globalSettingData.map2DThematicSetting).each(function (index, el) {
  381. if (el.category === category[i]) {
  382. var thematicLink = $('<li class="item thematic-layer-link"><div class="linkLibg"></div><span class="translate">' + el.name + '</span></li>');
  383. thematicLink.bind('click', el, function (e) {
  384. if ($(this).hasClass('selected')) {
  385. removeCurrentOverLayer();
  386. $(this).removeClass('selected');
  387. if (ONEMAP.M.toolWeatherMap) {
  388. ONEMAP.M.toolWeatherMap.remove();
  389. }
  390. } else {
  391. if (ONEMAP.M.toolWeatherMap) {
  392. ONEMAP.M.toolWeatherMap.remove();
  393. }
  394. removeCurrentOverLayer();
  395. if (e.data.type === "weatherMap") {
  396. //获取云图图集列表数据
  397. var weatherData;
  398. $.ajax({
  399. type: 'get',
  400. dataType: 'jsonp',
  401. url: el.productUrl + '/production/product_category?production_id=' + el.guid,
  402. beforeSend: ONEMAP.V.loading.load(),
  403. success: function (data) {
  404. weatherData = data;
  405. //添加云图控件
  406. addWeatherControl(weatherData, e.data);
  407. },
  408. error: function (data) {
  409. //console.log("有点小失败");
  410. },
  411. completer: ONEMAP.V.loading.loaded()
  412. })
  413. $('#userThematicList .selected').removeClass('selected');
  414. $(this).addClass('selected');
  415. } else if (e.data.type === "thematicOrigin") {
  416. url2D = e.data.url + '/' + e.data.guid + '?l={z}&x={x}&y={y}';
  417. url3D = e.data.url + '/' + e.data.guid + '?z=%d&x=%d&y=%d';
  418. modValue.currentOverLayerGuid = map23DControl.tileLayer({
  419. action: 'add',
  420. layer: {
  421. url2D: url2D,
  422. url3D: url3D,
  423. imageType: 'png',
  424. name: e.data.name,
  425. minZoom: e.data.min_zoom || 1,
  426. maxZoom: e.data.max_zoom || 19,
  427. guid: e.data.guid
  428. }
  429. })
  430. //S 优化
  431. //添加图层透明度控件
  432. overLayerOpacityControl = new L.Control.LayerOpacity(
  433. map2DViewer.layers[modValue.currentOverLayerGuid], {
  434. showFavBtn: false,
  435. closeCallback: function () {
  436. removeCurrentOverLayer();
  437. $('#userThematicList .selected').removeClass('selected');
  438. }
  439. }
  440. ).addTo(map2DViewer.map);
  441. thematicControl(
  442. map2DViewer.layers[modValue.currentOverLayerGuid], {
  443. data: e.data,
  444. showFavBtn: false,
  445. closeCallback: function () {
  446. removeCurrentOverLayer();
  447. $('#userThematicList .selected').removeClass('selected');
  448. }
  449. })
  450. ONEMAP.D.overLayerCount++;
  451. map2DViewer.map.setZoomScope(e.data['min_zoom'], e.data['max_zoom']);
  452. map23DControl.setView({
  453. center: {
  454. lat: e.data['center'].lat,
  455. lng: e.data['center'].lng
  456. },
  457. zoom: e.data['zoom'],
  458. tilt: 0
  459. })
  460. $('#userThematicList .selected').removeClass('selected');
  461. $(this).addClass('selected');
  462. //E 优化
  463. } else if (e.data.type === "vectorOrigin") {
  464. var cartodbF = new cartodbParseF();
  465. cartodbF.getVizInfo({
  466. vizUrl: e.data['url']
  467. }, function (tileData) {
  468. var tdTileLayerUrl = tileData['templateUrl'].replace('{z}/{x}/{y}', '%d/%d/%d');
  469. modValue.currentOverLayerGuid = map23DControl.tileLayer({
  470. action: 'add',
  471. layer: {
  472. url2D: tileData['templateUrl'],
  473. url3D: tdTileLayerUrl,
  474. imageType: 'png',
  475. name: e.data.name,
  476. minZoom: e.data.min_zoom || 1,
  477. maxZoom: e.data.max_zoom || 19
  478. }
  479. })
  480. map2DViewer.layers[modValue.currentOverLayerGuid]['utfgrids'] = [];
  481. //添加utfgrid
  482. _.each(tileData.utfgridUrl, function (el, index) {
  483. var aGridLayer = new L.UtfGrid(el + '?callback={cb}');
  484. map2DViewer.layers[modValue.currentOverLayerGuid]['utfgrids'].push(aGridLayer);
  485. aGridLayer.layerNum = index;
  486. aGridLayer.on('click', function (e) {
  487. L.DomEvent.stopPropagation(e);
  488. if (e.data) {
  489. var layerNum = e.target._map._layers[e.target._leaflet_id].layerNum;
  490. $.ajax({
  491. url: tileData.serverApiUrl + '/v1/map/' + tileData.layergroupid + '/' + layerNum + '/attributes/' + e.data.cartodb_id,
  492. type: 'GET',
  493. dataType: 'jsonp'
  494. })
  495. .done(function (data) {
  496. if (data) {
  497. var popupContent = $('<div></div>');
  498. _.each(data, function (pel, pindex) {
  499. popupContent.append('<div><strong>' + pindex + '</strong>:' + pel + '</div>')
  500. });
  501. var popup = L.popup()
  502. .setLatLng(e.latlng)
  503. .setContent(popupContent.get(0))
  504. .openOn(map2DViewer.map);
  505. }
  506. });
  507. }
  508. });
  509. aGridLayer.addTo(map2DViewer.map);
  510. });
  511. //S 优化
  512. //添加图层透明度控件
  513. overLayerOpacityControl = new L.Control.LayerOpacity(
  514. map2DViewer.layers[modValue.currentOverLayerGuid], {
  515. showFavBtn: false,
  516. closeCallback: function () {
  517. if (map2DViewer.layers[modValue.currentOverLayerGuid]['utfgrids'].length > 0) {
  518. _.each(map2DViewer.layers[modValue.currentOverLayerGuid]['utfgrids'], function (lel) {
  519. map2DViewer.map.removeLayer(lel);
  520. });
  521. }
  522. removeCurrentOverLayer();
  523. $('#userThematicList .selected').removeClass('selected');
  524. }
  525. }
  526. ).addTo(map2DViewer.map);
  527. thematicControl(
  528. map2DViewer.layers[modValue.currentOverLayerGuid], {
  529. data: e.data,
  530. showFavBtn: false,
  531. closeCallback: function () {
  532. removeCurrentOverLayer();
  533. $('#userThematicList .selected').removeClass('selected');
  534. }
  535. })
  536. ONEMAP.D.overLayerCount++;
  537. map2DViewer.map.setZoomScope(e.data['min_zoom'], e.data['max_zoom']);
  538. map23DControl.setView({
  539. center: {
  540. lat: e.data['center'].lat,
  541. lng: e.data['center'].lng
  542. },
  543. zoom: e.data['zoom'],
  544. tilt: 0
  545. })
  546. $('#userThematicList .selected').removeClass('selected');
  547. $(this).addClass('selected');
  548. //E 优化
  549. });
  550. } else {
  551. var tdTileLayerUrl = e.data['url'].replace('?x={x}&y={y}&z={z}', '?z=%d&x=%d&y=%d');
  552. tdTileLayerUrl = tdTileLayerUrl.replace('?z={z}&x={x}&y={y}', '?z=%d&x=%d&y=%d');
  553. tdTileLayerUrl = tdTileLayerUrl.replace('{z}/{y}/{x}', '%d/%d/%d');
  554. modValue.currentOverLayerGuid = map23DControl.tileLayer({
  555. action: 'add',
  556. layer: {
  557. url2D: e.data['url'],
  558. url3D: tdTileLayerUrl,
  559. imageType: 'png',
  560. name: e.data.name,
  561. minZoom: e.data.min_zoom || 1,
  562. maxZoom: e.data.max_zoom || 19
  563. }
  564. })
  565. //S 优化
  566. //添加图层透明度控件
  567. overLayerOpacityControl = new L.Control.LayerOpacity(
  568. map2DViewer.layers[modValue.currentOverLayerGuid], {
  569. showFavBtn: false,
  570. closeCallback: function () {
  571. removeCurrentOverLayer();
  572. $('#userThematicList .selected').removeClass('selected');
  573. }
  574. }
  575. ).addTo(map2DViewer.map);
  576. thematicControl(
  577. map2DViewer.layers[modValue.currentOverLayerGuid], {
  578. data: e.data,
  579. showFavBtn: false,
  580. closeCallback: function () {
  581. removeCurrentOverLayer();
  582. $('#userThematicList .selected').removeClass('selected');
  583. }
  584. })
  585. ONEMAP.D.overLayerCount++;
  586. map2DViewer.map.setZoomScope(e.data['min_zoom'], e.data['max_zoom']);
  587. map23DControl.setView({
  588. center: {
  589. lat: e.data['center'].lat,
  590. lng: e.data['center'].lng
  591. },
  592. zoom: e.data['zoom'],
  593. tilt: 0
  594. })
  595. $('#userThematicList .selected').removeClass('selected');
  596. $(this).addClass('selected');
  597. //E 优化
  598. }
  599. }
  600. });
  601. thematicLink.appendTo(linkcontent);
  602. }
  603. });
  604. liHtml.find('.sectionbg').bind('click', function () {
  605. $(this).parent().find('.linkContent').toggle();
  606. if ($(this).hasClass('open')) {
  607. $(this).removeClass('open');
  608. } else {
  609. $(this).addClass('open');
  610. $(this).parent().siblings().find('.linkContent').hide();
  611. $(this).parent().siblings().find('.sectionbg').removeClass('open');
  612. }
  613. })
  614. linkcontent.appendTo(liHtml);
  615. liHtml.appendTo($("#userThematicList"));
  616. }
  617. $("#userThematicList section").eq(0).find('.linkContent').show();
  618. $("#userThematicList section").eq(0).find('.sectionbg').addClass('open');
  619. //更新滚动条
  620. $('#userThematic .ii-body').mCustomScrollbar('update');
  621. }
  622. //添加云图控件
  623. function addWeatherControl(weatherData, elData) {
  624. var weatherMapData = [];
  625. $.each(weatherData.category[0].list, function (i, t) {
  626. var itemData = {};
  627. itemData.datetime = t.name;
  628. itemData.layerUrl = elData.url + '/' + t.guid + '?z={z}&x={x}&y={y}'
  629. weatherMapData.push(itemData);
  630. })
  631. map23DControl.setView({
  632. center: {
  633. lat: elData['center'].lat,
  634. lng: elData['center'].lng
  635. },
  636. zoom: elData['zoom'],
  637. tilt: 0
  638. })
  639. require(['modDir/tools/toolWeatherMap'], function (toolWeatherMap) {
  640. toolWeatherMap.init({
  641. weatherMapData: weatherMapData
  642. });
  643. });
  644. }
  645. //添加三维专题图控制条
  646. function thematicControl(layer, options) {
  647. modValue.thematicControlHtml = $("<div class='thematicControl'>" +
  648. "<iframe frameborder='0' class='cover-iframe'></iframe>" +
  649. "</div>");
  650. var cover_content = $("<div class='cover-content'></div>");
  651. cover_content.appendTo(modValue.thematicControlHtml);
  652. if (options.showFavBtn || !options.onlyShow) {
  653. var optionsWrap = $("<div class='options-wrap'></div>");
  654. optionsWrap.appendTo(cover_content);
  655. }
  656. $("<div class='thematicName'>名称:" + options.data.name + "</div>").appendTo(cover_content);
  657. if (options.atlas) {
  658. var atlasHtml = $("<a class='info_Btntd'>详情</a>");
  659. atlasHtml.appendTo(optionsWrap);
  660. atlasHtml.bind('click', function () {
  661. });
  662. }
  663. if (options.showFavBtn) {
  664. var favBtnHtml = $("<a class='fav_abtntd'>收藏</a>");
  665. favBtnHtml.appendTo(optionsWrap);
  666. favBtnHtml.bind('click', function () {
  667. });
  668. }
  669. if (!options.onlyShow) {
  670. var closeBtnHtml = $("<a class='close_abtntd'>关闭</a>");
  671. closeBtnHtml.appendTo(optionsWrap);
  672. closeBtnHtml.bind('click', function () {
  673. options.closeCallback();
  674. modValue.thematicControlHtml.remove();
  675. })
  676. }
  677. modValue.thematicControlHtml.appendTo($('#thematicControlContent'));
  678. };
  679. function removeCurrentOverLayer() {
  680. if (modValue.currentOverLayerGuid) {
  681. modValue.thematicControlHtml.remove();
  682. map23DControl.tileLayer({
  683. action: 'remove',
  684. guid: modValue.currentOverLayerGuid
  685. })
  686. modValue.currentOverLayerGuid = null;
  687. map2DViewer.map.removeControl(overLayerOpacityControl);
  688. overLayerOpacityControl = null;
  689. }
  690. ONEMAP.D.overLayerCount--;
  691. if (ONEMAP.D.overLayerCount == 0) {
  692. map2DViewer.map.setZoomScope(1, 19);
  693. }
  694. }
  695. return ONEMAP.M.sideNav = {
  696. init: init,
  697. show3dMap: show3dMap,
  698. show2dMap: show2dMap,
  699. modValue: modValue
  700. };
  701. })