/** * 声明变量map、layer、url */ var map; var baseLayerOne, baseLayerTwo; var alarmAnimatorVector, trackAnimatorVector, locationAnimatorVector; var aisMarkers, mwMarkers, selectMarkers, selectMarker = null; var gqVectorLayer, mtVectorLayer, bwVectorLayer, shipTrackLayer, mdVectorLayer, selectVectorLayer; var gqFeatures = [], mtFeatures = [], bwFeatures = []; var gqSelectFeature, bwSelectFeature, mdSelectFeature; var CommDataVal = {}; var checkParam; /** * 港口信息中心点 信息缓存 */ var harbour_code_serial = [ 321001, 321002, 321003, 321004, 321005, 321006,321007, 321009, 320001, 320002 ]; var harbour_code_lon_position = [ 121.23853, 120.23, 121.23, 122.23, 123.23,124.23, 125.23, 121.23853, 127.23, 128.23 ]; var harbour_code_lat_position = [ 31.57921, 30.57, 31.57, 32.57, 33.57, 34.57,35.57, 31.57921, 37.57, 38.57 ]; dojo.require("esri.map"); /** * 创建地图控件-地图初始化 */ function initMap() { /** * 初始化地图 * @type {SuperMap.Map} */ map = new esri.Map("map", { center: [120,32],zoom: 12 }); // map = new SuperMap.Map("map", { // controls : [ new SuperMap.Control.Navigation(), // new SuperMap.Control.MousePosition() ] var layer1 = new esri.layers.ArcGISTiledMapServiceLayer("http://www.arcgisonline.cn/ArcGIS/rest/services/ChinaOnlineCommunity/MapServer"); //var layer2 = new esri.layers.ArcGISTiledMapServiceLayer(""); map.addLayers([layer1]); // }); // /** // * 初始化图层 // */ // baseLayerOne = new SuperMap.Layer.TiledDynamicRESTLayer("底图1", // base_one_url, { // transparent : true, // cacheEnabled : true // }, { // maxResolution : "auto" // }); // //监听图层信息加载完成事件 // baseLayerOne.events.on({ // "layerInitialized" : addBaseLayerTwo // }); // // map.events.on({ // "moveend" : mapMoveChange // }); } /** * 初始化第二个底图 */ function addBaseLayerTwo() { //初始化图层 baseLayerTwo = new SuperMap.Layer.TiledDynamicRESTLayer("底图2", base_two_url, { transparent : true, cacheEnabled : true }); baseLayerTwo.events.on({ "layerInitialized" : addLayers }); } /** * 添加地图并且设置地图显示范围 */ function addLayers() { baseLayerOne.isBaseLayer = true; baseLayerTwo.isBaseLayer = true; /** * 图层添加到Map */ map.addLayers([ baseLayerOne, baseLayerTwo ]); //设置初始化地图显示范围 if( $('#control-harbour-info').size() == 0){ // 如果不是省厅 for(var i =0;i= 1) { // baseLayerOne.setVisibility(false); // baseLayerTwo.setVisibility(true); // map.setBaseLayer(baseLayerTwo); // } else { // baseLayerOne.setVisibility(true); // baseLayerTwo.setVisibility(false); // map.setBaseLayer(baseLayerOne); // } // addAISShip(); } function addAISShip() { var data = { "leftLon" : map.getExtent().left, "bottomLat" : map.getExtent().bottom, "rightLon" : map.getExtent().right, "topLat" : map.getExtent().top, "alarm" : true }; if (map.getZoom() >= 6) { //地图zoom大于等于6级后渲染船舶 data.alarm = false; }else{ if(aisMarkers){ aisMarkers.clearMarkers(); } } doajax("POST", localUrl + "/ship/realtime.json", data, function(data) { if (data.status == "10001") { var ais_datas = data.data; var aisLen = ais_datas.length; alarmAnimatorVector.removeAllFeatures(); aisMarkers.clearMarkers(); for (var i = 0; i < aisLen; i++) { if (map.getZoom() >= 6) { //地图zoom大于等于6级后渲染船舶 addShipMarker(ais_datas[i]); } if (ais_datas[i].alarm_status == 1) { //需要预警 showAlarmMarker(ais_datas[i]); } } } }, function() {}, true); } function addAISShips() { if (map.getZoom() >= 6) { //地图zoom大于等于6级后渲染船舶 var data = { "leftLon" : map.getExtent().left, "bottomLat" : map.getExtent().bottom, "rightLon" : map.getExtent().right, "topLat" : map.getExtent().top, "alarm" : false }; doajax("POST", localUrl + "/ship/realtime.json", data, function(data) { if (data.status == "10001") { var ais_datas = data.data; var aisLen = ais_datas.length; alarmAnimatorVector.removeAllFeatures(); alarmAnimatorVector.animator.stop(); aisMarkers.clearMarkers(); for (var i = 0; i < aisLen; i++) { addShipMarker(ais_datas[i],aisMarkers); if (ais_datas[i].alarm_status == 1) { //需要预警 showAlarmMarker(ais_datas[i]); } } alarmAnimatorVector.animator.start(); } }, function() { }, true); } else { aisMarkers.clearMarkers(); } } /** * 要素图层查询失败调用该Function * @param e */ function processFailed(e) { alert(e.error.errorMsg); } /** * 添加资源 */ function initResource() { var url = ''; if( $('#control-harbour-info').size() == 0){ // 如果不是省厅 url = url_get_harbour_map_info +"1/achorage/position" ; } else{ // 如果是省厅 if($('#control-harbour-info').val() != '') url = url_get_harbour_map_info + $('#control-harbour-info').val() +"/achorage/position"; else return ; } console.log(url); doRequest("GET", url, "", function(data) { if (data.status == '10001') { if (data.data == null) return; CommDataVal = data.data; addResouseLayer(); } }, function() { }, true); } /** * 添加图层 */ function addResouseLayer() { addGQResourceLayer(); addMTResouseLayer(); addBWResouseLayer(); addMDResouseLayer(); addMWResouseLayer(); aisInterval = setInterval("addAISShip()", 10000); addAISShip(); //在锚地信息框中点击锚位数量时触发 $("#anchorposition-num").click(function(){ var anchorage_id = $("#anchorage-id").text(); var search_ship_url = localUrl + "/achorPosition/achorageId?achorage_id=" + anchorage_id; openCenterWin('锚位信息', 2, 900, 400, search_ship_url); }); //在锚锚位信息框中点击锚位状态时触发 $("#anchor-status").click(function(){ var status_id = $("#status-id").text(); if(status_id == '1'){ //当前锚位为空闲 layer.msg('当前锚位为空闲锚位,无船舶停泊。'); return; } //如果已预留或已占用则查询相关船舶信息 }); } /** * 初始化业务图层 */ function initBusinessLayer() { alarmAnimatorVector = new SuperMap.Layer.AnimatorVector("预警图层", { rendererType : "TadpolePoint" }, { speed : 0.02,//设置速度为每帧播放0.02小时的数据 startTime : 0,//开始时间为0晨 endTime : 1000,//结束时间设置为最后运行结束的火车结束时间 frameRate : 5 //每秒渲染12帧 }); alarmAnimatorVector.renderer.tail = false; trackAnimatorVector = new SuperMap.Layer.AnimatorVector("轨迹动态渲染图层", { rendererType : "TadpolePoint" }, { speed : 0.2,//设置速度为每帧播放0.02小时的数据 startTime : 0,//开始时间为0晨 endTime : 1000,//结束时间设置为最后运行结束的火车结束时间 frameRate : 6 //每秒渲染12帧 }); trackAnimatorVector.renderer.tail = true; locationAnimatorVector = new SuperMap.Layer.AnimatorVector("船舶定位渲染图层", { rendererType : "TadpolePoint" }, { speed : 0.02,//设置速度为每帧播放0.02小时的数据 startTime : 0,//开始时间为0晨 endTime : 1000,//结束时间设置为最后运行结束的火车结束时间 frameRate : 12 //每秒渲染12帧 }); locationAnimatorVector.renderer.tail = false; aisMarkers = new SuperMap.Layer.Markers("船舶图层"); mwMarkers = new SuperMap.Layer.Markers("锚位图层", { visibility : false }); selectMarkers = new SuperMap.Layer.Markers("选中锚位图层"); bwVectorLayer = new SuperMap.Layer.Vector("泊位图层", { renderers : [ "Canvas2" ] }); mtVectorLayer = new SuperMap.Layer.Vector("码头图层", { renderers : [ "Canvas2" ] }); gqVectorLayer = new SuperMap.Layer.Vector("港区图层", { renderers : [ "Canvas2" ] }); shipTrackLayer = new SuperMap.Layer.Vector("船舶轨迹图层", { renderers : [ "Canvas2" ] }); mdVectorLayer = new SuperMap.Layer.Vector("锚地图层", { renderers : [ "Canvas2" ] }); selectVectorLayer = new SuperMap.Layer.Vector("选中图层", { renderers : [ "Canvas2" ] }); map.addLayers([ gqVectorLayer, mtVectorLayer, bwVectorLayer, mdVectorLayer, selectVectorLayer, shipTrackLayer, mwMarkers, aisMarkers, selectMarkers, trackAnimatorVector, alarmAnimatorVector, locationAnimatorVector ]); alarmAnimatorVector.animator.start(); locationAnimatorVector.animator.start(); trackAnimatorVector.animator.start(); checkParam = { "shipCheck" : aisMarkers, "mwCheck" : mwMarkers, "mdCheck" : mdVectorLayer, "gqCheck" : gqVectorLayer, "mtCheck" : mtVectorLayer, "bwCheck" : bwVectorLayer, "alarmCheck" : alarmAnimatorVector }; var checkbox = $("#layer-content table :checkbox"); var len = checkbox.length; for (var i = 0; i < len; i++) { $(checkbox[i]).change(function() { var key = $(this).attr('id'); checkParam[key].setVisibility($(this).is(':checked')); }); checkParam[$(checkbox[i]).attr('id')].setVisibility($(checkbox[i]).is( ':checked')); } initLayerListener(); } /** * 初始化图层Select事件 */ function initLayerListener() { var gqCallbacks = { over : function MouseOver(feature) { feature.style = { strokeColor : "#99ccff", strokeWidth : 1, fillColor : "#0000FF", label : feature.attributes.GQMC, fontFamily : "华文新魏", fontSize : "18px", fontWeight : "bold", fillOpacity : "0.2" }; gqVectorLayer.redraw(); }, out : function MouseOut(feature) { feature.style = { strokeColor : "#99ccff", strokeWidth : 1, fillColor : "#0000FF", fillOpacity : "0.1" }; gqVectorLayer.redraw(); }, click : function MouseClick(feature) { var geometry = feature.geometry.clone(); var selectFeature = new SuperMap.Feature.Vector(geometry); selectFeature.attributes = feature.attributes; selectFeature.style = { strokeColor : "#99ccff", strokeWidth : 1, fillColor : "#0000FF", fillOpacity : "0.2" }; selectFeatureFun(selectFeature); } } gqSelectFeature = new SuperMap.Control.SelectFeature(gqVectorLayer, { callbacks : gqCallbacks, repeat : true, hover : false, selectStyle : { strokeColor : "#050B41", strokeWidth : 2, fill : false } }); map.addControl(gqSelectFeature); bwSelectFeature = new SuperMap.Control.SelectFeature(bwVectorLayer, { onSelect : onBWFeatureSelect, onUnselect : onFeatureUnselect, repeat : true, selectStyle : { strokeColor : "#000000", strokeWidth : 1, fill : false } }); map.addControl(bwSelectFeature); var mdCallbacks = { over : function MouseOver(feature) { feature.style = { strokeColor : "#CAFF70", fillColor : "#f7c373", strokeWidth : 2, fillOpacity : 0.8, label : feature.attributes.name, fontWeight : "bold", fontFamily : "华文新魏", fontColor : "#2c3e50" }; mdVectorLayer.redraw(); }, out : function MouseOut(feature) { feature.style = { fillColor : "#B0E2FF", strokeColor : "#C1FFC1", label : feature.attributes.name, fillOpacity : 0.8, fontFamily : "华文新魏", fontColor : "#2c3e50" }; mdVectorLayer.redraw(); }, click : function MouseClick(feature) { var geometry = feature.geometry.clone(); var selectFeature = new SuperMap.Feature.Vector(geometry); selectFeature.attributes = feature.attributes; selectFeature.style = { strokeColor : "#CAFF70", fillColor : "#f7c373", strokeWidth : 2, fillOpacity : 0.8, label : feature.attributes.name, fontWeight : "bold", fontFamily : "华文新魏", fontColor : "#2c3e50" }; selectFeatureFun(selectFeature); doRequest("GET",url_get_ais_anchorage_info + feature.attributes.id, "",function(data) { if (data.status == 10001) { if (data.data == null) return; var dataVal = data.data; writeHtmlDate("anchorage-id", feature.attributes.id); writeHtmlDate("anchorage-name", dataVal.name); writeHtmlDate("harbour-name", dataVal.harbour_name); writeHtmlDate("anchorage-length", dataVal.length) writeHtmlDate("anchorage-width", dataVal.width) writeHtmlDate("anchorage-square", dataVal.square) writeHtmlDate("geology", dataVal.geology) writeHtmlDate("anchorage-position", dataVal.position) writeHtmlDate("anchorage-purpose", dataVal.purpose) writeHtmlDate("annchorage-capacity", dataVal.capacity) writeHtmlDate("anchorposition-num", dataVal.anchorpostion_num); openWinLayer('锚地信息', 500, 250, $('#anchorage-info')); } else { alert(data.statusMsg); } }, function() {}, true) } } mdSelectFeature = new SuperMap.Control.SelectFeature(mdVectorLayer, { callbacks : mdCallbacks, repeat : true, hover : false, selectStyle : { strokeColor : "#C1FFC1", strokeWidth : 2, fill : false } }); map.addControl(mdSelectFeature); initResource(); } /** * 点击搜索按钮 */ function searchShip() { setSearchStyle(); var content = $('#srchContent').val(); if ("" != $.trim(content)) { var search_ship_url = localUrl + "/shipSearch/keyWords?keyWords=" + content; openCenterWin('船舶信息', 2, 700, 500, search_ship_url); } } /** * 设置搜索框样式 */ function setSearchStyle() { var sid = "#srchContent"; var iconId = "#srchIcon"; if ($(sid).css("display") == "none") { $(sid).css("display", "inline-block"); $(sid).css("border", "1px solid #b7b7b7"); $(sid).focus(); $(iconId).css("margin-left", "0px"); return; } var content = $(sid).val(); if ("" == $.trim(content)) { $(sid).css("display", "none"); $(iconId).css("margin-left", "195px"); $(sid).css("border", "0px solid #b7b7b7"); } } /** * 设置搜索框样式 */ function setLayersStyle() { var sid = "#layer-content"; var iconId = "#layer-icon"; if ($(sid).css("display") == "none") { $(sid).css("display", "inline-block"); $("#btn-float").css("color","#0091ff"); $("#spanarrow").removeClass("downward"); $("#spanarrow").addClass("upward"); } else { $(sid).css("display", "none"); $("#btn-float").css("color","#565656"); $("#spanarrow").removeClass("upward"); $("#spanarrow").addClass("downward"); } } /** * 初始化调用 */ $(document).ready(function() { //initMap(); dojo.addOnLoad(initMap); });