/** * 三维侧栏功能 */ define([ 'html!templates/tools/toolFor3d', 'css!styles/tools/toolFor3d' ], function(tpcLayout){ /** * 状态值 * @type {Boolean} * @default false * @private */ var status = { initialized:false,//是否初始化 veiwHeightType:null }; /** * 模块数据 用于数据存储和外部调用 * @type {Object} * 数据存放 */ var modValue = { }; /** * 三维侧栏初始化设置 */ function init(){ if(!status.initialized){ setLayout(); bindEvent(); $(window).resize(function() { resizeLayout(); }); } ONEMAP.D.currentSideBarMod = 'toolsFor3d'; status.initialized = true; var zIndex = ONEMAP.M.sideBar.getZIndex(); $("#toolsFor3d").css({zIndex:zIndex}); }; function setLayout(){ $(tpcLayout).appendTo($("#sideBarBody")); var mxListTemplate = Handlebars.compile($('#moxing-list-item-template').html()); $('#model3DList').append(mxListTemplate(ONEMAP.D.globalSettingData.map3DModelSetting)); }; function bindEvent(){ $('#model3DList li input:checkbox').bind('change',function(e){ if($(this).is(':checked')){ var modelData = ONEMAP.D.globalSettingData.map3DModelSetting[$(this).val()]; modelData.indexNum = $(this).val(); add3DModel(modelData); }else { var modelData = { indexNum:$(this).val() } add3DModel(modelData); } }); //清除路线 $('#clearFlyLine').bind('click',function(){ locaSpaceMap.Globe.Action = 0; //使鼠标动作返回普通浏览状态 locaSpaceMap.Globe.MemoryLayer.RemoveAllFeature(); locaSpaceMap.Refresh(); //刷新显示 }); //绘制路线 $("#drawFlyLine").bind('click',function(){ if($(this).hasClass('cur')){ $(this).removeClass('cur'); locaSpaceMap.Globe.Action = 0; //使鼠标动作返回普通浏览状态 locaSpaceMap.Refresh(); //刷新显示 }else { $('#toolsModal .modal-body .cur').removeClass('cur'); $(this).addClass('cur'); locaSpaceMap.Globe.Action = 10; locaSpaceMap.Refresh(); //刷新显示 } }) //选定路线 $('#selectFlyLine').bind('click',function(){ if($(this).hasClass('cur')){ $(this).removeClass('cur'); locaSpaceMap.Globe.Action = 0; //使鼠标动作返回普通浏览状态 locaSpaceMap.Refresh(); //刷新显示 }else { $('#toolsModal .modal-body .cur').removeClass('cur'); $(this).addClass('cur'); locaSpaceMap.Globe.Action = 5; locaSpaceMap.Refresh(); //刷新显示 } }); //沿线飞行 $('#flyByLine').bind('click',function(){ var features=locaSpaceMap.Globe.DestLayerFeatureAdd.GetAllFeatures(); if(locaSpaceMap.Globe.SelectedObject){ var flyAlongLineSpeed=parseInt($('#flyOptions').find('input[name="flySpeed"]').val())?parseInt($('#flyOptions').find('input[name="flySpeed"]').val()):0; var flyAlongLineHeight=parseInt($('#flyOptions').find('input[name="flyHeight"]').val())?parseInt($('#flyOptions').find('input[name="flyHeight"]').val()):0; var flyAlongLineElev=parseInt($('#flyOptions').find('input[name="flyElevation"]').val())?parseInt($('#flyOptions').find('input[name="flyElevation"]').val()):0; if(flyAlongLineSpeed<100 || flyAlongLineSpeed>100000){ alert('请输入大于100小于100000的速度值'); return false; } if(flyAlongLineHeight<300 || flyAlongLineHeight>100000){ alert('请输入大于300小于100000的高度值'); return false; } if(flyAlongLineElev<1 || flyAlongLineElev>90){ alert('请输入大于1小于90的仰角值'); return false; } //禁止倾斜 locaSpaceMap.Globe.FlyAlongLineSpeed=flyAlongLineSpeed; locaSpaceMap.Globe.FlyEyeAlongWithLine1(locaSpaceMap.Globe.SelectedObject.Geometry, flyAlongLineHeight, flyAlongLineElev, true, 0 , true); locaSpaceMap.Globe.Action = 0; $('#drawFlyLine, #selectFlyLine, #flyByLine').hide(); $('#flyStop , #flyGo').show(); }else { alert('请绘制或选择路线!'); } }); $('#flyGo').bind('click',function(){ locaSpaceMap.Globe.ContinueFly(); }); $('#flyStop').bind('click',function(){ $('#drawFlyLine, #selectFlyLine, #flyByLine').show(); $('#flyStop , #flyGo').hide(); locaSpaceMap.Globe.StopFly(); }); //工具 //清除工具 $('#clearAllTools').bind('click',function(){ locaSpaceMap.Globe.Action = 0; //使鼠标动作返回普通浏览状态 locaSpaceMap.Globe.ClearMeasure(); //清理量算遗留下来的线 locaSpaceMap.Globe.ClearAnalysis();//清除所有分析 locaSpaceMap.Refresh(); //刷新显示 }); //雷达分析 $('#toolLDZZ').bind('click',function(){ if($(this).hasClass('cur')){ $(this).removeClass('cur'); locaSpaceMap.Globe.Action = 0; //使鼠标动作返回普通浏览状态 locaSpaceMap.Refresh(); //刷新显示 }else { $('#toolsModal .modal-body .cur').removeClass('cur'); var maxHeight = $('#toolsFor3d').height() > $('#toolsFor3dWrap').height()?$('#toolsFor3d').height():$('#toolsFor3dWrap').height(); $('#coverHeight').css({height:maxHeight}); $('#coverHeight').show(); status.veiwHeightType='toolLDZZ'; } }); //可视域分析 $('#toolKSYFX').bind('click',function(){ if($(this).hasClass('cur')){ $(this).removeClass('cur'); locaSpaceMap.Globe.Action = 0; //使鼠标动作返回普通浏览状态 locaSpaceMap.Refresh(); //刷新显示 }else { $('#toolsModal .modal-body .cur').removeClass('cur'); var maxHeight = $('#toolsFor3d').height() > $('#toolsFor3dWrap').height()?$('#toolsFor3d').height():$('#toolsFor3dWrap').height(); $('#coverHeight').css({height:maxHeight}); $('#coverHeight').show(); status.veiwHeightType='toolKSYFX'; } }); $('#coverHeight .cancel').bind('click',function(){ $('#coverHeight').hide(); }); $('#coverHeight .sure').bind('click',function(){ var height = parseInt($('#coverHeight .input').val()); if(height>0 && height<1000){ $('#coverHeight').hide(); switch(status.veiwHeightType){ case 'toolLDZZ': locaSpaceMap.Globe.CenterHeightOfViewEnvelopeAnalysis = height; locaSpaceMap.Globe.Action=14; locaSpaceMap.Refresh(); //刷新显示 break; case 'toolKSYFX': locaSpaceMap.Globe.CenterHeightOfViewshedAnalysis = height; locaSpaceMap.Globe.Action=13; locaSpaceMap.Refresh(); //刷新显示 break; } }else { alert('请输入大于0小于1000的高度值'); } }); //通视分析 $('#toolTTFX').bind('click',function(){ if($(this).hasClass('cur')){ $(this).removeClass('cur'); locaSpaceMap.Globe.Action = 0; //使鼠标动作返回普通浏览状态 locaSpaceMap.Refresh(); //刷新显示 }else { $('#toolsModal .modal-body .cur').removeClass('cur'); $(this).addClass('cur'); locaSpaceMap.Globe.Action=15; locaSpaceMap.Refresh(); //刷新显示 } }); //高度测量 $('#toolGDLS').bind('click',function(){ if($(this).hasClass('cur')){ $(this).removeClass('cur'); locaSpaceMap.Globe.Action = 0; //使鼠标动作返回普通浏览状态 locaSpaceMap.Refresh(); //刷新显示 }else { $('#toolsModal .modal-body .cur').removeClass('cur'); $(this).addClass('cur'); locaSpaceMap.Globe.Action=4; locaSpaceMap.Globe.RulerHeight.SpaceMeasure = false; // 量算模式绘制线的时候是从地表为起点向上绘制 locaSpaceMap.Globe.RulerHeight.ValueMode = 1; // 量算的线上显示的值是相对地表高度 locaSpaceMap.Refresh(); //刷新显示 } }); }; function resizeLayout(){ }; /** * 加载/移除3D模型 * @return {[type]} [description] */ function add3DModel(options){ if(options.name){ modValue['model'+options.indexNum] = locaSpace.AddLayer(options.url); locaSpace.FlyToPlace(options.center.lng,options.center.lat,options.zoom,0,45); }else { locaSpaceMap.Globe.Layers.RemoveLayerByID(modValue['model'+options.indexNum]['ID']); } locaSpaceMap.Refresh(); }; return ONEMAP.M.toolFor3d = { init:init } })