(function($, BMap, window) { var sensorNames = { "e1": ["PM2.5", "ug/m3"], "e2": ["PM10", "ug/m3"], "e3": ["颗粒物0.3", "PCS/0.1L"], "e4": ["颗粒物2.5", "PCS/0.1L"], "e5": ["甲醛", "mg/m3"], "e6": ["湿度", "%"], "e7": ["温度", "℃"], "e8": ["氧气", "%"], "e9": ["氯气", "mg/m3"], "e10": ["一氧化碳", "mg/m3"], "e11": ["二氧化硫", "ug/m3"], "e12": ["光照", "Lux"], "e13": ["噪音", "dB"], "e14": ["氨气", "mg/m3"], "e15": ["臭氧", "ug/m3"], "e16": ["二氧化氮", "ug/m3"], "e17": ["挥发有机气体", "PPB"], "e18": ["风速", "m/s"], "e19": ["二氧化碳", "mg/m3"] } var showSensorKeys=["e1","e2","e10","e11","e15","e16"]; var moralMap = {}; var baiduMap = null; /* * 根据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.mapInit = function() { var defaultParam = { minZoom: 12, maxZoom: 20 }; if(!!arguments[1]) { $.extend(defaultParam,arguments[1]); } baiduMap = new BMap.Map("mapCanvas",defaultParam); // 创建Map实例,设置地图允许的最小/大级别 var map = baiduMap; var mapStyle = { features: ["road", "building", "water", "land"], //隐藏地图上的poi style: "normal" //设置地图风格为高端黑 } map.setMapStyle(mapStyle); var showZoom = !!arguments[2] && arguments[2] <=defaultParam.maxZoom && arguments[2] >= defaultParam.minZoom?arguments[2]:12; 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({ anchor: BMAP_ANCHOR_BOTTOM_RIGHT, type: BMAP_NAVIGATION_CONTROL_LARGE }); map.addControl(navigation); } moralMap.closeSearchBox = function() { moralMap["_searchBoxKey"] = Math.random(); $(".search_box").css("display", "none"); } //延时开启 moralMap.openSearchBox = function() { key = Math.random(); moralMap["_searchBoxKey"] = key; setTimeout(function() { if(moralMap["_searchBoxKey"] == key) { $(".search_box").css("display", "block"); } }, 1500); } /* * ----------------适配方法------------------------ */ moralMap.addEventListener = function(type, fn) { baiduMap.addEventListener(type, function() { if(type == "zoomstart") { moralMap._zoomStartHandle(); } else if(type == "zoomend") { moralMap._zoomEndHandle(); } fn.apply(baiduMap, arguments); }); } moralMap._zoomStartHandle = function() { baiduMap.closeInfoWindow(); moralMap.startZoom(baiduMap.getZoom()); } moralMap._zoomEndHandle = function() { if($(".search_box").css("display") == "none") { moralMap.openSearchBox(); } var endZoom = baiduMap.getZoom(); var startZoom = moralMap.startZoom(); //刷新key防止延迟加载 // var key = moralMap.lazyKeyer(); var confine = moralMap.getZoomConfine(); if(endZoom > startZoom) { //放大超过边界 if(endZoom >= confine && startZoom <= confine) { //清空控件 moralMap.layer("equipments"); moralMap.clearOverlays(); } } else { //缩小超过边界 if(endZoom != startZoom && startZoom >= confine && endZoom < confine) { //清空控件 moralMap.layer("monitorpoints"); moralMap.clearOverlays(); } } } moralMap.layer = (function() { var _layers = ["equipments", "monitorpoints"]; var _layer = "monitorpoints"; return function(layer) { if(layer == undefined) { return _layer; } else { for(var i in _layers) { if(layer == _layers[i]) { _layer = layer; } } } } })(); // 坐标适配器 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 new moralMap.Bounds(baiduMap.getBounds()); //即时bounds; } moralMap.getMaxBounds = function() { var key = "_" + moralMap.layer() + "_bounds"; return this[key]; } moralMap.setMaxBounds = function(bs) { var key = "_" + moralMap.layer() + "_bounds"; var _bounds = !!this[key]?this[key]:new moralMap.Bounds(); //累积数据 //记录最大边界 _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 bs = moralMap.getBounds(); //实际数据 if(!_bounds) { isOver = true; moralMap.setMaxBounds(bs); } else { isOver = (bs.northeastLng > _bounds.northeastLng || bs.northeastLat > _bounds.northeastLat || bs.southwestLng < _bounds.southwestLng || bs.southwestLat < _bounds.southwestLat); if(isOver){ moralMap.setMaxBounds(bs); } } return isOver; } moralMap.addOverlay = function(overlay) { if(overlay.getMap() != baiduMap) { // setTimeout(function(){ baiduMap.addOverlay.call(baiduMap, overlay); // },10); baiduMap.addOverlay.call(baiduMap, overlay); } } moralMap.addOverlays = function(overlays) { if(overlays != null && typeof overlays == 'object') { for(var i in overlays) { moralMap.addOverlay(overlays[i]); } } } moralMap.removeOverlay = function(overlay) { // baiduMap.removeOverlay(overlay); baiduMap.removeOverlay.apply(baiduMap, arguments); } moralMap.removeOverlays = function(overlays) { if(overlays != null && typeof overlays == 'object') { for (var i in overlays) { moralMap.removeOverlay(overlays[i]); } } } moralMap.getOverlays = function() { var overLays = baiduMap.getOverlays.apply(baiduMap, arguments) var moralMarker = []; for(var i in overLays) { if(overLays[i] instanceof BMap.Overlay) { moralMarker.push(overLays[i]); } } return moralMarker; } moralMap.clearCloseInfoWindow = function () { if(!!moralMap["_closeInfoWinTimer"]){ clearTimeout(moralMap["_closeInfoWinTimer"]); moralMap["_closeInfoWinTimer"] = null; } } moralMap.openInfoWindow = function() { moralMap.clearCloseInfoWindow(); baiduMap.openInfoWindow.apply(baiduMap, arguments);; //开启信息窗口 } moralMap.closeInfoWindow = function() { var timer = setTimeout(function () { baiduMap.closeInfoWindow.apply(baiduMap, arguments); moralMap["_closeInfoWinTimer"] = null; },1200); moralMap["_closeInfoWinTimer"] = timer; } moralMap.clearOverlays = function() { baiduMap.clearOverlays(); } moralMap.startZoom = ( function() { var _zoom = null; return function(z) { if(z == undefined) { return _zoom; } else { _zoom = z; } } } )(); moralMap.lazyKeyer = (function() { var _key = null; return function(key) { if(key == undefined) { _key = Math.random(); return _key; } else { return _key == key; } }; })(); moralMap.getUtf8Length = function(str) { return str.replace(/[\u0391-\uFFE5]/g, "cc").length; } //弹窗处理 moralMap.showPopupbox = function(id) { setTimeout(function () { $(id).css('display', 'block'); },1); } moralMap.closePopupbox = function(id) { $(id).css('display', 'none'); } moralMap.isPopupBoxShow = function(id) { return $(id).css('display') == 'block'; } 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']['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; } moralMap.getPopupEquMacs = function() { var macs = []; if(moralMap["_equs"] != null) { for(var i in moralMap["_equs"]) { var equ = moralMap["_equs"][i]; macs.push(equ["mac"]); } } return macs; } moralMap.getPopupEqu = function(index) { if(typeof moralMap["_equs"] === 'object') { return moralMap["_equs"][index]; } throw "equs is empty"; } //{id:必填,url:,pagesize:} //list加载 moralMap.initListView = function(option) { var listView = { load: function(url) { if(url != undefined) { $.extend(option, { "url": url }); } option["pageNo"] = 1; _load(option); } }; listView["option"] = option; listView.refreshState = function(equstates) { if(equstates != null) { for(var i in equstates) { var equstate = equstates[i]; var mac = equstate["mac"]; var state = equstate["state"]; var id_select = "#listview_state_" + mac; var stateObj = _getStateMap(state); var stateClass = stateObj["state"]; var stateName = stateObj["stateName"]; if(!$(id_select).hasClass(state)) { $(id_select).attr("class", stateClass); $(id_select).text(stateName); } } } } function _getStateMap(s) { var state; var stateName; switch(parseInt(s)) { case 0: state = 'state00'; stateName = '正常'; break; case 1: state = 'state01'; stateName = '轻度'; break; case 2: state = 'state02'; stateName = '中度'; break; case 3: state = 'state03'; stateName = '严重'; break; case 4: state = 'state04'; stateName = '维保'; break; } return { "state": state, "stateName": stateName }; } function _load(option) { if(option['url'] != null && option['url'] != "") { var pageSize = option["pageSize"] || 20; var pageNo = option["pageNo"] || 1; var url = option['url']; url += "&pageNo=" + pageNo; url += "&pageSize=" + pageSize; console.log(url); $.ajax({ type: "get", cache: false, url: url, async: true, success: function(res) { if(res!=null&&res.total!=null) { var rows = res.data; if(rows==null||rows.length == 0) { $(option['id']).html("没有查询到任何数据!"); return; } //储存设备信息 moralMap.setPopupEqus(rows); var outHtml = ""; var total = res['total']; var totalPage = Math.ceil(total / pageSize); if(totalPage > 1) { outHtml += "
"; } $(option['id']).html(outHtml); if(totalPage > 1) { $("#page").paging({ pageNo: pageNo, totalPage: totalPage, totalSize: total, callback: function(num) { //先清空内容 $(option['id']).html(""); option["pageNo"] = num; _load(option); } }) } } } }); } } return listView; } moralMap.MoralMarker = function(option) { var _option = option; var _pointObj = new BMap.Point(_option['longitude'], _option['latitude']); var _iconObj = _getMapIcon(_option["state"]); this._point = _pointObj; //获取MapIcon私有方法 function _getMapIcon(state) { state = state == null ? 0 : state; var icon = _option["icon"]; //var url = icon["stateIcons"][state]; var url = icon["url"] + state + ".png"; return new BMap.Icon(url, new BMap.Size(icon["width"], icon["height"]), { imageSize: new BMap.Size(icon["width"], icon["height"]) }); } this.constructor.call(this, _pointObj, { icon: _iconObj, enableMassClear: true }) //事件注册 var eventType = ['click']; for(var index in eventType) { var eventName = eventType[index]; if(_option[eventName] != undefined && typeof _option[eventName] == "function") { var fn = _option[eventName]; this.addEventListener(eventName, function() { //将arguments转换成数组 var args = Array.prototype.slice.call(arguments); fn.apply(this, args); }); } } return $.extend(this, { refreshState: function(state) { //状态发生变化的时候刷新 图标 if(_option['state'] != state){ _option['state'] = state; var iconObj = _getMapIcon(state); this.setIcon(iconObj); } }, getOption: function() { return _option; }, setOption: function(option) { _option = option; } }) } //new BMap.Marker()这种写法IE7会报错,很奇葩 moralMap.MoralMarker.prototype = new BMap.Marker(); //监控点对象 包装Mark对象 moralMap.Monitorpoint = function(option) { if(monitorPointStates){ for(var i in monitorPointStates){ var state = monitorPointStates[i]; if(state.id == option.id){ option.state = state.state; } } } var icon = {}; icon["stateIcons"] = ["/img/ico00.png", "/img/ico01.png", "/img/ico02.png", "/img/ico03.png", "/img/ico04.png"]; icon["url"] = "/img/ico0"; icon["width"] = 50; icon["height"] = 50; option["icon"] = icon; var moralMarker = new moralMap.MoralMarker(option); // var mark =new BMap.Marker(pointObj,{icon:iconObj}); //==================infoWindow-start============================ var infoWindow = (function() { //生成信息框 var winOpts = { width: 110, // 信息窗口宽度 height: 80, // 信息窗口高度 title: getTitleOutHtml(), // 信息窗口标题 offset: new BMap.Size(-8,-5) //设置信息窗偏移 } function getTitleOutHtml() { //title太长用引号... var title = (option["name"] == null) ? "" : option["name"]; if(title.length > 13) { title = title.slice(0, 13) + "..."; } var titleOutHtml = ""; titleOutHtml += "

"; titleOutHtml += title + "

"; return titleOutHtml; } function getAdressOutHtml() { var address = (option["address"] == null) ? "" : option["address"]; if(address.length > 18) { address = address.slice(0, 18) + "..."; } var adressOutHtml = ""; adressOutHtml += "
实时数据>>"; adressOutHtml += "
"; return adressOutHtml; } return new BMap.InfoWindow(getAdressOutHtml(), winOpts); })(); if(moralMarker["infoWindow"] == undefined) { moralMarker["infoWindow"] = infoWindow; } //弹窗打开和关闭 moralMarker.addEventListener("mouseover", function() { moralMap.openInfoWindow(infoWindow, this._point); //开启信息窗口 }); moralMarker.addEventListener("mouseout", function() { moralMap.closeInfoWindow(); }); //==================infoWindow-end============================ //储存监控点 moralMap.putMpoint(option['id'], moralMarker); return moralMarker; } //储存MonitorPoint对象 moralMap.putMpoint = function(key, obj) { if(moralMap['_mpoints'] == undefined) { moralMap['_mpoints'] = {}; } moralMap['_mpoints'][key] = obj; } //key为监控点id moralMap.getMpoint = function(key) { if(typeof moralMap['_mpoints'] === 'object') { return moralMap['_mpoints'][key]; } } moralMap.getMpoints = function(key) { return moralMap['_mpoints']; } moralMap.clearMpoints = function() { if(moralMap['_mpoints'] != undefined) { delete moralMap['_mpoints']; } } //设备以mac为key储存 //监控点对象 包装MoralMark对象 moralMap.Equipment = function(option) { if(deviceStates){ for(var i in deviceStates){ var state = deviceStates[i]; if(state.id == option.id){ option.state = state.state; } } } 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["url"] = "/img/ico_coo0"; icon["width"] = 50; icon["height"] = 60; option["icon"] = icon; option["offline_width"] = 300; option["offline_height"] = 80; option["online_width"] = 355; option["online_height"] = 385; var moralMarker = new moralMap.MoralMarker(option); // var mark =new BMap.Marker(pointObj,{icon:iconObj}); //==================infoWindow-start============================ var infoWindow = (function() { //生成信息框 var winOpts = { width: 110, // 信息窗口宽度 height: 80, // 信息窗口高度 title: getTitleOutHtml(), // 信息窗口标题 offset: new BMap.Size(-8,-5) //设置信息窗偏移 } function getTitleOutHtml() { //title太长用引号... var title = (option["name"] == null) ? "" : option["name"]; if(title.length > 13) { title = title.slice(0, 13) + "..."; } var titleOutHtml = ""; titleOutHtml += "

"; titleOutHtml += title + "

"; return titleOutHtml; } function getAdressOutHtml() { var address = (option["address"] == null) ? "" : option["address"]; if(address.length > 18) { address = address.slice(0, 18) + "..."; } var adressOutHtml = ""; adressOutHtml += "
13) { title = title.slice(0, 13) + "..."; } var titleOutHtml = ""; titleOutHtml += "

"; titleOutHtml += title + "

"; return titleOutHtml; } return new BMap.InfoWindow("", winOpts); })(); var dataHandle = { _getDataOutHtml: function(data) { if(data==null||data["state"]==4){ return "

设备正在维护升级,暂时没有数据!

"; } var mac = data['mac']; var itme_mac_key = "item-" + mac + "-" + key; var dataOutHtml = "
"; return dataOutHtml; }, _getSensorState: function(data, key) { var grade="grade"; var levels; if(data["level3"]!=null){ levels = data["level3"] instanceof Array ? data["level3"]:JSON.parse(data["level3"]); if($.inArray(key,levels)!=-1){ return grade+"03"; } } if(data["level2"] !=null){ levels = data["level2"] instanceof Array ? data["level2"]:JSON.parse(data["level2"]); if($.inArray(key,levels)!=-1){ return grade+"02"; } } if(data["level1"] !=null){ levels = data["level1"] instanceof Array ? data["level1"]:JSON.parse(data["level1"]); if($.inArray(key,levels)!=-1){ return grade+"01"; } } return grade+"00"; } };*/ if(moralMarker["infoWindow"] == undefined) { moralMarker["infoWindow"] = infoWindow; } var mouseOverHandle = option['mouseover']; //弹窗打开和关闭 /*moralMarker.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() == "") { var data = this.getData(); var option = this.getOption(); if(data==null||data["state"]==4){ infoWindow.setHeight(option["offline_height"]); infoWindow.setWidth(option["offline_width"]); }else{ infoWindow.setHeight(option["online_height"]); infoWindow.setWidth(option["online_width"]); } infoWindow.setContent(dataHandle._getDataOutHtml(data)); infoWindow.redraw(); } }); moralMarker.addEventListener("mouseout", function() { baiduMap.closeInfoWindow(); infoWindow.setContent(""); moralMap.openSearchBox(); });*/ moralMarker.addEventListener("mouseover", function() { moralMap.openInfoWindow(infoWindow, this._point); //开启信息窗口 }); moralMarker.addEventListener("mouseout", function() { moralMap.closeInfoWindow(); }); //==================infoWindow-end============================ //储存监控点 moralMap.putEquipment(option['mac'], moralMarker); var _super_refreshState = moralMarker.refreshState; //$("#searchParam").val(option['mac']); return $.extend(moralMarker, { refreshState: function(data) { if(data != null && data!="") { var state = this.getOption()["state"]; this.setData(data); //更新数据 _super_refreshState.call(this, data["state"]); //如果当前窗体时打开的,刷新窗体里的数据 /*if(infoWindow.isOpen()) { if(data["state"]==4){ if(state!=4){ infoWindow.setHeight(option["offline_height"]); infoWindow.setWidth(option["offline_width"]); infoWindow.setContent(dataHandle._getDataOutHtml(data)); infoWindow.redraw(); } return; } var mac = data["mac"]; var itme_mac_key = "#item-" + mac + "-" + key; if($(itme_mac_key).length==0){ infoWindow.setHeight(option["online_height"]); infoWindow.setWidth(option["online_width"]); infoWindow.setContent(dataHandle._getDataOutHtml(data)); infoWindow.redraw(); } for(var key in data) { if($.inArray(key,showSensorKeys)!=-1) { var dataValue = data[key]; var itme_state = dataHandle._getSensorState(data, key); var itme_data_mac_key = "#item-data-" + mac + "-" + key; if(!$(itme_data_mac_key).hasClass(itme_state)) { $(itme_data_mac_key).attr("class", itme_state); } $(itme_data_mac_key).text(dataValue); } } }*/ } }, setData:function(data){ var option = this.getOption(); option["data"] = data; this.setOption(option); }, getData:function(){ return this.getOption()["data"]; } }); } //储存MonitorPoint对象 moralMap.putEquipment = function(key, obj) { if(key!=null&&key!=""){ key = String.prototype.toLowerCase.call(key); if(moralMap['_equipments'] == undefined) { moralMap['_equipments'] = {}; } 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]; } } moralMap.getEquipments = function(key) { return moralMap['_equipments']; } moralMap.clearEquipments = function() { if(moralMap['_equipments'] != undefined) { delete moralMap['_equipments']; } } moralMap.getZoomConfine = function() { return 18; } moralMap.getZoom = function() { return baiduMap.getZoom(); } moralMap.getHorizonMarkers = function(isShow) { var bounds = moralMap.getBounds(); var oldMarkerList; var isShow = (isShow) ? baiduMap : null; if(moralMap.layer() == "equipments") { oldMarkerList = moralMap.getEquipments(); } else { oldMarkerList = moralMap.getMpoints(); } var markers = []; if(oldMarkerList != null && typeof oldMarkerList == "object") { for(var i in oldMarkerList) { var oldmarker = oldMarkerList[i]; if(oldmarker != null && oldmarker instanceof BMap.Overlay && oldmarker.getMap() == isShow) { var option = oldmarker.getOption(); if(typeof option == 'object') { var longitude = option['longitude']; var latitude = option['latitude']; // 检索当前坐标范围内的组件 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); } } } moralMap.callJS = function(condition) { var new_point = new BMap.Point(condition.longitude, condition.latitude); baiduMap.panTo(new_point); baiduMap.setCenter(new_point); baiduMap.setZoom(condition.type == "mpoint" ? 17 : 18); var interval = setInterval(function(){ var marker; if (condition.type == "mpoint") { marker = moralMap.getMpoint(condition.id); } else if (condition.type == "device") { marker = moralMap.getEquipment(condition.mac); } if(marker){ clearInterval(interval); moralMap.openInfoWindow(marker["infoWindow"], new_point); } }, 50); } var deviceStates ; var monitorPointStates; moralMap.refreshState = function(states) { if (!monitorPointStates) { monitorPointStates = states; deviceStates = []; for (var i in states) { var state = states[i]; for (var j in state.devices) { var device = state.devices[j]; deviceStates.push(device); } } } for (var i in states) { var state = states[i]; var mpoint = moralMap.getMpoint(state.id); if (mpoint) { mpoint.refreshState(state.state); } for (var j in state.devices) { var marker = state.devices[j]; var marker_mac = marker["mac"]; var equipment = moralMap.getEquipment(marker_mac); if (equipment) { equipment.refreshState(marker); } } } } window.moralMap = moralMap; })(jQuery, BMap, window);