123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609 |
- /**
- * 声明变量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<harbour_code_serial.length;i++){
- if(harbour_code_serial[i] == self_harbour_id ){
- map.setCenter(new SuperMap.LonLat(harbour_code_lon_position[i], harbour_code_lat_position[i]), 4);
- break ;
- }
- }
- }else{ // 如果是省厅
- //显示地图范围
- map.setCenter(new SuperMap.LonLat(119.7401215, 32.985849), 0);
- }
-
- initBusinessLayer();
-
- }
- function selectFeatureFun(feature) {
- selectVectorLayer.removeAllFeatures();
- selectVectorLayer.addFeatures([ feature ]);
- }
- function selectMarkerFun(latlon, icon_path, size) {
- var icon = new SuperMap.Icon(icon_path, size, getMarkerOffset(size));
- var marker = new SuperMap.Marker(latlon, icon);
- selectMarkers.clearMarkers();
- selectMarkers.addMarker(marker);
- }
- function clearSelectFun() {
- selectVectorLayer.removeAllFeatures();
- selectMarkers.clearMarkers();
- }
- function getMarkerOffset(size) {
- return new SuperMap.Pixel(-(size.w / 2), -size.h);
- }
- /**
- * 泊位要素被选中时调用此函数
- * @param feature
- */
- function onBWFeatureSelect(feature) {
- selectFeatureFun(feature);
- console.log("泊位名称:" + feature.attributes.MC);
- }
- /**
- * 港区要素被选中时调用此函数
- * @param feature
- */
- function onGQFeatureSelect(feature) {
- selectFeatureFun(feature);
- console.log("港区代码:" + feature.attributes.GQDM);
- }
- /**
- * 清除要素时调用此函数
- * @param feature
- */
- function onFeatureUnselect(feature) {
- }
- /**
- * 当前地图extend发生变化时触发该函数
- */
- function mapMoveChange() {
- // alert(1);
- // var zoom = map.getZoom();
- // if (zoom >= 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);
- });
|