define(['html!templates/heighterControl_mini', 'css!styles/heighterControl_mini' ], function(tplayout) { /** * [modValue description] * 数据存储 * @type {[type]} */ var modValue = { curLayerModel: null, curAddLayer: {}, appendToMyLayer: null, shijingGroup: null }; /** * 状态存储 */ var status = { initialized: false }; /** * 模块初始化 */ function init() { if (!status.initialized) { status.initialized = true; setLayout(); subscribe(); bindEvents(); } } /** * [setLayout description] * 加载布局0 */ function setLayout() { $(tplayout).appendTo($("#wrapper")); //添加路网实景控件 modValue.leadorStreetViewControl = new L.Control.LeadorStreetView(); modValue.leadorStreetViewControl.addTo(map2DViewer.map); }; function change23D(options) { if (options == '2d') { $('#heighterSlider').removeClass('class3d'); $("#leadorStreetViewModal .popup_html").removeClass('TD'); } else { $('#heighterSlider').addClass('class3d'); $("#leadorStreetViewModal .popup_html").addClass('TD'); } } /** * 加载监听事件 */ function subscribe() { ONEMAP.C.publisher.subscribe(change23D, 'change23D'); ONEMAP.C.publisher.subscribe(function(zoom) { if (zoom < 11) { jumpToLiveaction('clear'); $("#heighterSlider").hide(); } else if(onemapUrlConfig.leadorSwitch){ $("#heighterSlider").show(); } }, 'mapChange23D'); ONEMAP.C.publisher.subscribe(function(options) { if (modValue.leadorStreetViewControl) { modValue.leadorStreetViewControl.updateMarker3D(options.latlng); } }, 'map3DclickNew') }; /** * 加载点击事件 */ function bindEvents() { $("#heighterSlider .heighterslider-content .heighterslider-li").bind('click', function() { if ($(this).hasClass('active')) { $("#heighterSlider .heighterslider-content .heighterslider-li").removeClass('active'); var mid = 'clear'; } else { var mid = $(this).attr('mid'); $("#heighterSlider .heighterslider-content .heighterslider-li").removeClass('active'); $(this).addClass('active'); } jumpToStallite(mid); //19 jumpToIonosphere(mid); //18 jumpToClouds(mid); jumpToImage(mid); jumpToModel(mid); jumpToLiveaction(mid); }) $("#menu .liveaction").off("click").on("click", function() { var mid; if ($(this).hasClass('active')) { $(this).removeClass('active'); mid = 'clear'; } else { mid = $(this).attr('mid'); $(this).addClass('active'); } jumpToLiveaction(mid); }) }; function jumpToStallite(mid) { if (mid == 'stallite') { if (modValue.curLayerModel != 'stallite') { setViewer(1); ONEMAP.C.publisher.publish('3D', 'layout::mapStyle'); modValue.curLayerModel = 'stallite'; if (ONEMAP.M.taiShiMap) { ONEMAP.M.taiShiMap.removeAllLayers() } require(['modDir/weixing/daohang'], function(daohang) { daohang.init($(this)); }); } } else { if (ONEMAP.M.daohang) { ONEMAP.M.daohang.cleanmap(); modValue.curLayerModel = null; } } }; function jumpToIonosphere(mid) { if (mid == 'ionosphere') { if (modValue.curLayerModel != 'ionosphere') { setViewer(2); modValue.curLayerModel = 'ionosphere'; } } else { modValue.curLayerModel = null; } }; function jumpToClouds(mid) { if (mid == 'clouds') { if (modValue.curLayerModel != 'clouds') { setViewer(4); modValue.curLayerModel = 'clouds'; } } else { modValue.curLayerModel = null; } }; function jumpToImage(mid) { if (mid == 'image') { ONEMAP.C.publisher.publish('showGH', 'layout::mapStyle'); } else { modValue.curLayerModel = null; } }; function jumpToModel(mid) { if (mid == 'model') { if (modValue.curLayerModel != 'model') { modValue.curLayerModel = 'model'; ONEMAP.C.publisher.publish('3D', 'layout::mapStyle'); ONEMAP.C.publisher.publish('add', '3DModelControl'); } } else { ONEMAP.C.publisher.publish('remove', '3DModelControl'); modValue.curLayerModel = null; } }; function jumpToLiveaction(mid) { if (mid == 'liveaction') { $("#leadorStreetViewControl #leadorStreetViewWrap").dragmove($("#leadorStreetViewControl")); if (modValue.curLayerModel != 'liveaction') { map23DControl.setView({ center: { lat: 39.91302, lng: 116.4166 }, zoom: 13 }) modValue.curLayerModel = 'liveaction'; if (!modValue.shijingGroup) { modValue.shijingGroup = map23DControl.group({ action: 'add' }) } if (!modValue.appendToMyLayer) { var options = { action: "add", DOM: { name: '实景', type: "group", guid: modValue.shijingGroup } } modValue.appendToMyLayer = ONEMAP.M.myLayers.myLayerControl(options); ONEMAP.C.publisher.subscribe(controlMyLayer, modValue.appendToMyLayer); } modValue.leadorStreetViewControl.addShijing(); if (map23DData.display.map2D){ $("#leadorStreetViewModal .popup_html").removeClass('TD'); }else{ $("#leadorStreetViewModal .popup_html").addClass('TD'); } $("#leadorStreetViewModal .popup-ct").dragmove($("#leadorStreetViewModal")); } else { jumpToLiveaction('clear') } } else { $("#heighterSlider .heighterslider-content .liveaction").removeClass('active'); if (modValue.leadorStreetViewControl) { modValue.leadorStreetViewControl.controlShijing(); modValue.curLayerModel = null; var options = { action: "remove", DOMid: modValue.appendToMyLayer } ONEMAP.M.myLayers.myLayerControl(options); ONEMAP.C.publisher.unSubscribe(controlMyLayer, modValue.appendToMyLayer); modValue.appendToMyLayer = false; modValue.shijingGroup = false; } } }; function clearOtherLayer() { $("#heighterSlider .heighterslider-content .liveaction").removeClass('active'); modValue.leadorStreetViewControl.controlShijing(); modValue.curLayerModel = null; if (modValue.shijingGroup) { map23DControl.group({ action: 'remove', guid: modValue.shijingGroup }) modValue.shijingGroup = false; } } function controlMyLayer(options) { switch (options.action) { case 'remove': removeMyLayer(); break; case 'opacity': setGropOpacity(options); break; case 'up': case 'down': setGroupZIndex(options); break; } }; function setGroupZIndex(options){ } function removeMyLayer() { jumpToLiveaction('clear'); }; function setGropOpacity(options) { options = options.options; if (options.opacity == 1) { map23DControl.group({ action: 'show', guid: modValue.shijingGroup }) $("#leadorStreetViewModal").show(); modValue.leadorStreetViewControl.controlMyLayer('show'); } else if (options.opacity == 0) { map23DControl.group({ action: 'hide', guid: modValue.shijingGroup }) $("#leadorStreetViewModal").hide(); modValue.leadorStreetViewControl.controlMyLayer('hide'); } } function setViewer(zoom) { map23DControl.setView({ zoom: zoom, heading: 0, //摄像机平面角度 正北为0 tilt: 0, //摄像机倾斜角 }) } /** * [layoutResize description] * 重置布局 * @return {[type]} [description] */ function layoutResize() { } return ONEMAP.M.heighterControl = { init: init, modValue: modValue } })