From 36ec060269e130c78a403499434305ac445e87da Mon Sep 17 00:00:00 2001 From: fengxiang <110431245@qq.com> Date: Wed, 30 May 2018 11:07:32 +0800 Subject: [PATCH] 地图相关资源 --- src/main/webapp/js/moralmap.js | 278 ++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 181 insertions(+), 97 deletions(-) diff --git a/src/main/webapp/js/moralmap.js b/src/main/webapp/js/moralmap.js index e26429f..c2b46ce 100644 --- a/src/main/webapp/js/moralmap.js +++ b/src/main/webapp/js/moralmap.js @@ -26,20 +26,20 @@ /* * ������mac������������version */ - moralMap.getVersion = function(mac){ - var version = null; - $.ajax({ - type:"get", - url:"getversion?mac="+mac, - async:false, - success:function(jsonData){ - if(jsonData!=null&&typeof jsonData=='object'){ - version = jsonData['version']; - } - } - }); - return version; - } + // moralMap.getVersion = function(mac){ + // var version = null; + // $.ajax({ + // type:"get", + // url:"getversion?mac="+mac, + // async:false, + // success:function(jsonData){ + // if(jsonData!=null&&typeof jsonData=='object'){ + // version = jsonData['version']; + // } + // } + // }); + // return version; + // } /* * ��������������������� */ @@ -54,7 +54,7 @@ style: "normal" //������������������������������ } map.setMapStyle(mapStyle); - var showZoom = 12; + var showZoom = 13; if(arguments.length == 2) { map.centerAndZoom(new BMap.Point(arguments[0], arguments[1]), showZoom); } else if(arguments.length == 1) { @@ -139,43 +139,57 @@ } } })(); + // ��������������� + moralMap.Bounds = function (baiduBounds) { + if(!!baiduBounds){ + this.northeastLng = baiduBounds.xl.lng;//��������������������������� + this.northeastLat = baiduBounds.xl.lat;//��������������������������� + this.southwestLng = baiduBounds.Ol.lng;//��������������������������������� + this.southwestLat = baiduBounds.Ol.lat;//��������������������������������� + }else{ + this.northeastLng = null;//��������������������������� + this.northeastLat = null;//��������������������������� + this.southwestLng = null;//��������������������������������� + this.southwestLat = null;//��������������������������������� + } + } moralMap.getBounds = function() { - return baiduMap.getBounds(); //������bounds; + return new moralMap.Bounds(baiduMap.getBounds()); //������bounds; } moralMap.getMaxBounds = function() { var key = "_" + moralMap.layer() + "_bounds"; return this[key]; } - moralMap.setMaxBounds = function(bounds) { + moralMap.setMaxBounds = function(bs) { var key = "_" + moralMap.layer() + "_bounds"; - var _bounds = this[key]; //������������ - if(_bounds == undefined) { - _bounds = {}; - } - if(bounds == undefined) { - bounds = baiduMap.getBounds(); - } + var _bounds = !!this[key]?this[key]:new moralMap.Bounds(); //������������ //������������������ - _bounds["Fe"] = _bounds['Fe'] || bounds['Fe']; //��������������������������� - _bounds["Ge"] = _bounds['Ge'] || bounds['Ge']; //��������������������������� - _bounds["Ke"] = _bounds['Ke'] || bounds['Ke']; //��������������������������������� - _bounds["Le"] = _bounds['Le'] || bounds['Le']; //��������������������������������� - _bounds["Fe"] = bounds['Fe'] > _bounds["Fe"] ? bounds['Fe'] : _bounds["Fe"]; //��������������������������� - _bounds["Ge"] = bounds['Ge'] > _bounds["Ge"] ? bounds['Ge'] : _bounds["Ge"]; //��������������������������� - _bounds["Ke"] = bounds['Ke'] < _bounds["Ke"] ? bounds['Ke'] : _bounds["Ke"]; //��������������������������������� - _bounds["Le"] = bounds['Le'] < _bounds["Le"] ? bounds['Le'] : _bounds["Le"]; //��������������������������������� + _bounds.northeastLng = _bounds.northeastLng || bs.northeastLng; + _bounds.northeastLat = _bounds.northeastLat || bs.northeastLat; + _bounds.southwestLng = _bounds.southwestLng || bs.southwestLng; + _bounds.southwestLat = _bounds.southwestLat || bs.southwestLat; + _bounds.northeastLng = bs.northeastLng > _bounds.northeastLng ? bs.northeastLng: _bounds.northeastLng; + _bounds.northeastLat = bs.northeastLat > _bounds.northeastLat ? bs.northeastLat: _bounds.northeastLat; + _bounds.southwestLng = bs.southwestLng < _bounds.southwestLng ? bs.southwestLng: _bounds.southwestLng; + _bounds.southwestLat = bs.southwestLat < _bounds.southwestLat ? bs.southwestLat: _bounds.southwestLat; this[key] = _bounds; } moralMap.isOverBounds = function() { var isOver = false; var _bounds = moralMap.getMaxBounds(); //������������ - var bounds = baiduMap.getBounds(); //������������ - if(_bounds == null) { + var bs = moralMap.getBounds(); //������������ + if(!_bounds) { isOver = true; - moralMap.setMaxBounds(bounds); + moralMap.setMaxBounds(bs); } else { - isOver = (bounds['Fe'] > _bounds["Fe"] || bounds['Ge'] > _bounds["Ge"] || bounds['Ke'] < _bounds["Ke"] || bounds['Le'] < _bounds["Le"]); - moralMap.setMaxBounds(bounds); + debugger; + isOver = (bs.northeastLng > _bounds.northeastLng + || bs.northeastLat > _bounds.northeastLat + || bs.southwestLng < _bounds.southwestLng + || bs.southwestLat < _bounds.southwestLat); + if(isOver){ + moralMap.setMaxBounds(bs); + } } return isOver; @@ -208,11 +222,22 @@ } return moralMarker; } + moralMap.clearCloseInfoWindow = function () { + if(!!moralMap["_closeInfoWinTimer"]){ + clearTimeout(moralMap["_closeInfoWinTimer"]); + moralMap["_closeInfoWinTimer"] = null; + } + } moralMap.openInfoWindow = function() { - baiduMap.openInfoWindow.apply(baiduMap, arguments); + moralMap.clearCloseInfoWindow(); + baiduMap.openInfoWindow.apply(baiduMap, arguments);; //������������������ } moralMap.closeInfoWindow = function() { - baiduMap.closeInfoWindow.apply(baiduMap, arguments); + var timer = setTimeout(function () { + baiduMap.closeInfoWindow.apply(baiduMap, arguments); + moralMap["_closeInfoWinTimer"] = null; + },1200); + moralMap["_closeInfoWinTimer"] = timer; } moralMap.clearOverlays = function() { baiduMap.clearOverlays(); @@ -245,32 +270,48 @@ } //������������ moralMap.showPopupbox = function(id) { - $(id).css('display', 'block'); + setTimeout(function () { + $(id).css('display', 'block'); + },1); } moralMap.closePopupbox = function(id) { - $(id).css('display', 'none'); + $(id).css('display', 'none'); } moralMap.isPopupBoxShow = function(id) { return $(id).css('display') == 'block'; } - moralMap.onItermClick = function(index) { + moralMap.onItermClick = function(index,select) { var row = moralMap.getPopupEqu(index); + if(row['mac']==null){ + alert("mac���������������������������������������"); + return; + } var equ = { + methodName : 'chart'== select ?'showChart':'showDeviceMonitor', name: row['name'], mac: (row['mac']).toLowerCase(), longitude: row['longitude'], latitude: row['latitude'], - version:moralMap.getVersion(row['mac']) - } + monitorPointId: row['monitorPointId'], + version:row['deviceVersion']['version'] + }; + !!select?equ['monitorPointId'] = row["monitorPointId"]:null; var equStr = JSON.stringify(equ); - if(window["console"]!=undefined){ - console.log(equStr); - } - if(window['external']&&window['external']['showMonitorInfo']){ - window['external'].showMonitorInfo(equStr); - }else{ - alert(equStr); + if(window["console"]!=undefined){ + console.log(equStr); } + if(!!window['external']&&window['external']['callWin']){ + window['external'].callWin(equStr); + }else{ + if(!!select&&select==='chart'&&!!window['external']&&window['external']['showChartInfo']){ + window['external'].showChartInfo(equStr); + }else if(!!window['external']&&window['external']['showMonitorInfo']){ + window['external'].showMonitorInfo(equStr); + }else{ + alert(equStr); + } + } + } moralMap.setPopupEqus = function(arr) { moralMap["_equs"] = arr; @@ -346,7 +387,7 @@ break; case 4: state = 'state04'; - stateName = '������'; + stateName = '������'; break; } return { @@ -360,29 +401,18 @@ var pageSize = option["pageSize"] || 20; var pageNo = option["pageNo"] || 1; var url = option['url']; - url += "&page=" + pageNo; - url += "&rows=" + pageSize; + url += "&pageNo=" + pageNo; + url += "&pageSize=" + pageSize; + console.log(url); $.ajax({ type: "get", cache: false, url: url, async: true, - success: function(data) { - if(data) { - if(typeof data !== 'object' && typeof data === 'string') { - try { - data = $.parseJSON(data); - } catch(e) { - return; - } - } - var rows = null; - if(data['rows'] != undefined) { - rows = data['rows']; - } else { - rows = data; - } - if(rows.length == 0) { + success: function(res) { + if(res!=null&&res.total!=null) { + var rows = res.data; + if(rows==null||rows.length == 0) { $(option['id']).html("������������������������������"); return; } @@ -413,11 +443,13 @@ } name = name.substring(0, stop1) + "..." + name.substring(stop2, name.length); } - var li = "<li id='listview_item_" + e['mac'] + "' onclick=moralMap.onItermClick(" + i + ")><span id='listview_state_" + e['mac'] + "' class='" + state + "'>" + stateName + "</span>" + name + "</li>"; + var li = "<li id='listview_item_" + e['mac'] + "'><span class='list-chart-span' onclick=moralMap.onItermClick(\"" + i + "\",'chart')><img src='/img/chart.png'></span>" + +"<span id='listview_state_" + e['mac'] + "'class='" + state + "'>" + stateName + "</span>" + + "<div style='cursor: pointer;' onclick=moralMap.onItermClick(\"" + i + "\")>" + name + "</div></li>"; outHtml += li; } outHtml += "</ul>"; - var total = data['total']; + var total = res['total']; var totalPage = Math.ceil(total / pageSize); if(totalPage > 1) { outHtml += "<div id='page' class='page_div'></div>"; @@ -463,7 +495,7 @@ enableMassClear: true }) //������������ - var eventType = ['click', 'mouseover', 'mouseout']; + var eventType = ['click']; for(var index in eventType) { var eventName = eventType[index]; if(_option[eventName] != undefined && typeof _option[eventName] == "function") { @@ -477,9 +509,12 @@ } return $.extend(this, { refreshState: function(state) { - _option['state'] = state; - var iconObj = _getMapIcon(state); - this.setIcon(iconObj); + //��������������������������������� ������ + if(_option['state'] != state){ + _option['state'] = state; + var iconObj = _getMapIcon(state); + this.setIcon(iconObj); + } }, getOption: function() { return _option; @@ -490,11 +525,11 @@ }) } //new BMap.Marker()������������IE7��������������������� - moralMap.MoralMarker.prototype = BMap.Marker.prototype; + moralMap.MoralMarker.prototype = new BMap.Marker(); //��������������� ������Mark������ moralMap.Monitorpoint = function(option) { var icon = {}; - icon["stateIcons"] = ["img/ico00.png", "img/ico01.png", "img/ico02.png", "img/ico03.png", "img/ico04.png"]; + icon["stateIcons"] = ["/img/ico00.png", "/img/ico01.png", "/img/ico02.png", "/img/ico03.png", "/img/ico04.png"]; icon["width"] = 50; icon["height"] = 50; option["icon"] = icon; @@ -505,9 +540,9 @@ //��������������� var winOpts = { width: 110, // ������������������ - height: 50, // ������������������ + height: 80, // ������������������ title: getTitleOutHtml(), // ������������������ - offset: new BMap.Size(-2, -21) //��������������������� + offset: new BMap.Size(-2,0) //��������������������� } function getTitleOutHtml() { @@ -529,24 +564,27 @@ address = address.slice(0, 18) + "..."; } var adressOutHtml = ""; - adressOutHtml += "<div style='font:12px arial,sans-serif;margin-top:12px'><table cellspacing='0' style='overflow:hidden;table-layout:fixed;width:100%;font:12px arial,sans-serif'>"; + adressOutHtml += "<div onmouseover='moralMap.clearCloseInfoWindow()'"; + adressOutHtml += "onmouseout='moralMap.closeInfoWindow()'"; + adressOutHtml +=" style='font:12px arial,sans-serif;margin-top:12px'><table cellspacing='0' style='overflow:hidden;table-layout:fixed;width:100%;font:12px arial,sans-serif'>"; adressOutHtml += "<tbody><tr><td style='vertical-align:top;width:38px;white-space:nowrap;word-break:keep-all'>��������� </td><td style='line-height:16px'>"; adressOutHtml += address + " "; - adressOutHtml += "</td></tr></tbody></table></div>"; + adressOutHtml += "</td></tr>"; + adressOutHtml += "<tr><td style='width:98%;padding-top:10px;'colspan='2'><a href='javascript:void(0);' style='display:block;position: relative;float: right;' onclick='moralMap.showPointMonitor("+option.id+")'>������������>></a></td></tr>"; + adressOutHtml += "</tbody></table></div>"; return adressOutHtml; } return new BMap.InfoWindow(getAdressOutHtml(), winOpts); })(); - if(moralMask["infoWindow"] == undefined) { moralMask["infoWindow"] = infoWindow; } //��������������������� moralMask.addEventListener("mouseover", function() { - baiduMap.openInfoWindow(infoWindow, this._point); //������������������ + moralMap.openInfoWindow(infoWindow, this._point); //������������������ }); moralMask.addEventListener("mouseout", function() { - baiduMap.closeInfoWindow(); + moralMap.closeInfoWindow(); }); //==================infoWindow-end============================ //��������������� @@ -579,7 +617,7 @@ //��������������� ������MoralMark������ moralMap.Equipment = function(option) { var icon = {}; - icon["stateIcons"] = ["img/ico_coo00.png", "img/ico_coo01.png", "img/ico_coo02.png", "img/ico_coo03.png", "img/ico_coo04.png"]; + icon["stateIcons"] = ["/img/ico_coo00.png", "/img/ico_coo01.png", "/img/ico_coo02.png", "/img/ico_coo03.png", "/img/ico_coo04.png"]; icon["width"] = 50; icon["height"] = 60; option["icon"] = icon; @@ -596,7 +634,7 @@ width: option["online_width"], // ������������������ height:option["online_height"], // ������������������ title: getTitleOutHtml(), // ������������������ - offset: new BMap.Size(-2, -30) //��������������������� + offset: new BMap.Size(-2, -10) //��������������������� } function getTitleOutHtml() { @@ -616,7 +654,7 @@ var dataHandle = { _getDataOutHtml: function(data) { if(data==null||data["state"]==4){ - return "<br/><h3>������������������������,������������������!</h3>"; + return "<br/><h3>������������������������,������������������!</h3>"; } var mac = data['mac']; var itme_mac_key = "item-" + mac + "-" + key; @@ -643,18 +681,22 @@ }, _getSensorState: function(data, key) { var grade="grade"; + var levels; if(data["level3"]!=null){ - if($.inArray(key,data["level3"])!=-1){ + levels = data["level3"] instanceof Array ? data["level3"]:JSON.parse(data["level3"]); + if($.inArray(key,levels)!=-1){ return grade+"03"; } } if(data["level2"] !=null){ - if($.inArray(key,data["level2"])!=-1){ + levels = data["level2"] instanceof Array ? data["level2"]:JSON.parse(data["level2"]); + if($.inArray(key,levels)!=-1){ return grade+"02"; } } if(data["level1"] !=null){ - if($.inArray(key,data["level1"])!=-1){ + levels = data["level1"] instanceof Array ? data["level1"]:JSON.parse(data["level1"]); + if($.inArray(key,levels)!=-1){ return grade+"01"; } } @@ -665,8 +707,14 @@ if(moralMask["infoWindow"] == undefined) { moralMask["infoWindow"] = infoWindow; } + var mouseOverHandle = option['mouseover']; //��������������������� moralMask.addEventListener("mouseover", function() { + if(mouseOverHandle!=null&&mouseOverHandle instanceof Function){ + //���arguments��������������� + var args = Array.prototype.slice.call(arguments); + mouseOverHandle.apply(this, args); + } moralMap.closeSearchBox(); baiduMap.openInfoWindow(infoWindow, this._point); //������������������ if(infoWindow.getContent() == "") { @@ -743,13 +791,18 @@ } //������MonitorPoint������ moralMap.putEquipment = function(key, obj) { - key = String.prototype.toLowerCase.call(key); - if(moralMap['_equipments'] == undefined) { - moralMap['_equipments'] = {}; + if(key!=null&&key!=""){ + key = String.prototype.toLowerCase.call(key); + if(moralMap['_equipments'] == undefined) { + moralMap['_equipments'] = {}; + } + moralMap['_equipments'][key] = obj; } - moralMap['_equipments'][key] = obj; } moralMap.getEquipment = function(key) { + if(key == null){ + return null; + } key = String.prototype.toLowerCase.call(key); if(typeof moralMap['_equipments'] === 'object') { return moralMap['_equipments'][key]; @@ -767,7 +820,7 @@ return 18; } moralMap.getHorizonMarkers = function(isShow) { - var bounds = baiduMap.getBounds(); + var bounds = moralMap.getBounds(); var oldMarkerList; var isShow = (isShow) ? baiduMap : null; if(moralMap.layer() == "equipments") { @@ -784,7 +837,8 @@ if(typeof option == 'object') { var longitude = option['longitude']; var latitude = option['latitude']; - if(longitude < bounds['Ge'] && longitude > bounds['Le'] && latitude < bounds['Fe'] && latitude > bounds['Ke']) { + // ������������������������������������ + if(longitude < bounds.northeastLng && longitude > bounds.southwestLng && latitude < bounds.northeastLat && latitude > bounds.southwestLat) { markers.push(oldmarker); } } @@ -793,5 +847,35 @@ } return markers; } + moralMap.showPointMonitor = function (id) { + var mpointMarker = moralMap.getMpoint(id); + var mpoint = mpointMarker.getOption(); + if(!!mpoint){ + delete mpoint['organization']; + delete mpoint['icon']; + delete mpoint['click']; + if(window["console"]!=undefined){ + console.log(mpoint); + } + $.get("getvers?mptid="+id,function (res) { + if(!!res&&res.code==1){ + mpoint['versions'] = res.data; + mpoint['methodName'] = 'showPointMonitor'; + var mpointStr = JSON.stringify(mpoint); + if(!!window['external']&&window['external']['callWin']){ + window['external'].callWin(mpointStr); + }else{ + alert(JSON.stringify(mpointStr)); + } + } + }) + }else{ + if(window["console"]!=undefined){ + console.log("option of mpointMarker is null"); + console.log(mpointMarker); + } + } + + } window.moralMap = moralMap; })(jQuery, BMap, window); \ No newline at end of file -- Gitblit v1.8.0