| | |
| | | } |
| | | map.setMapStyle(mapStyle); |
| | | var showZoom = 12; |
| | | if(arguments.length == 2) { |
| | | map.centerAndZoom(new BMap.Point(arguments[0], arguments[1]), showZoom); |
| | | } else if(arguments.length == 1) { |
| | | map.centerAndZoom(arguments[0], showZoom); |
| | | } |
| | | var address = arguments[0]; |
| | | var regoinNames = address.split(" "); |
| | | var cityName = regoinNames.length>1?regoinNames[1]:regoinNames[0]; |
| | | map.setCurrentCity(cityName); |
| | | // 将地址解析结果显示在地图上,并调整地图视野 |
| | | // 创建地址解析器实例 |
| | | var myGeo = new BMap.Geocoder(); |
| | | myGeo.getPoint(address, function(point){ |
| | | if (point) { |
| | | map.centerAndZoom(point, showZoom); |
| | | }else{ |
| | | alert("您选择地址没有解析到结果!"); |
| | | } |
| | | }, cityName); |
| | | //增加导航控件 |
| | | map.enableScrollWheelZoom(true); |
| | | var navigation = new BMap.NavigationControl({ |
| | |
| | | } |
| | | } |
| | | })(); |
| | | // 坐标适配器 |
| | | 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); |
| | | isOver = (bs.northeastLng > _bounds.northeastLng |
| | | || bs.northeastLat > _bounds.northeastLat |
| | | || bs.southwestLng < _bounds.southwestLng |
| | | || bs.southwestLat < _bounds.southwestLat); |
| | | if(isOver){ |
| | | moralMap.setMaxBounds(bs); |
| | | } |
| | | } |
| | | |
| | | return isOver; |
| | |
| | | } |
| | | 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(); |
| | |
| | | } |
| | | //弹窗处理 |
| | | 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'], |
| | | 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; |
| | |
| | | state = stateObj["state"]; |
| | | stateName = stateObj["stateName"]; |
| | | var name = e['name']; |
| | | if(moralMap.getUtf8Length(name) > 24) { |
| | | if(moralMap.getUtf8Length(name) > 22) { |
| | | var stop1 = 0; |
| | | for(var stop1_i = 0, len = 0; stop1_i < name.length; stop1_i++) { |
| | | len += ((name.charCodeAt(stop1_i) & 0xff00) != 0) ? 2 : 1; |
| | |
| | | } |
| | | 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 winOpts = { |
| | | width: 110, // 信息窗口宽度 |
| | | height: 50, // 信息窗口高度 |
| | | height: 80, // 信息窗口高度 |
| | | title: getTitleOutHtml(), // 信息窗口标题 |
| | | offset: new BMap.Size(-2, -21) //设置信息窗偏移 |
| | | offset: new BMap.Size(-2,0) //设置信息窗偏移 |
| | | } |
| | | |
| | | function getTitleOutHtml() { |
| | |
| | | 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============================ |
| | | //储存监控点 |
| | |
| | | width: option["online_width"], // 信息窗口宽度 |
| | | height:option["online_height"], // 信息窗口高度 |
| | | title: getTitleOutHtml(), // 信息窗口标题 |
| | | offset: new BMap.Size(-2, -30) //设置信息窗偏移 |
| | | offset: new BMap.Size(-2, -10) //设置信息窗偏移 |
| | | } |
| | | |
| | | function getTitleOutHtml() { |
| | |
| | | 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") { |
| | |
| | | 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); |
| | | } |
| | | } |
| | |
| | | } |
| | | 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); |