(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; /* * 百度地图初始化 */ moralMap.mapInit = function () { var defaultParam = { minZoom: 12, maxZoom: 20, enableMapClick: false }; 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]; if (cityName == "市辖区" || cityName == "县" || cityName == "省直辖县级行政区划") { cityName = regoinNames[2]; } map.setCurrentCity(cityName); // 将地址解析结果显示在地图上,并调整地图视野 // 创建地址解析器实例 var myGeo = new BMap.Geocoder(); myGeo.getPoint(address, function (point) { if (point) { if ("大同市" == cityName) { var longitude = 113.30640743; var latitude = 40.08256467; point = new BMap.Point(longitude, latitude); } else if ("阿拉善盟" == cityName) { var longitude = 105.733648; var latitude = 38.858951; point = new BMap.Point(longitude, latitude); } else if ("乌兰察布市" == cityName) { var longitude = 113.136019; var latitude = 41.001403; point = new BMap.Point(longitude, latitude); } else if ("宜宾市" == cityName) { var longitude = 104.647678; var latitude = 28.758767; point = new BMap.Point(longitude, latitude); } else if ("那曲地区" == cityName) { var longitude = 92.056768; var latitude = 31.482684; point = new BMap.Point(longitude, latitude); } else if ("永川区" == cityName) { var longitude = 105.930055; var latitude = 29.363305; point = new BMap.Point(longitude, latitude); } else if ("大足区" == cityName) { var longitude = 105.727253; var latitude = 29.714369; point = new BMap.Point(longitude, latitude); } else if ("铜梁区" == cityName) { var longitude = 106.061728; var latitude = 29.852264; point = new BMap.Point(longitude, latitude); } else if ("綦江区" == cityName) { var longitude = 106.654609; var latitude = 29.035883; point = new BMap.Point(longitude, latitude); } else if ("万盛区" == cityName) { var longitude = 106.889359; var latitude = 28.907664; point = new BMap.Point(longitude, latitude); } else if ("丰都县" == cityName) { var longitude = 107.735181; var latitude = 29.869663; point = new BMap.Point(longitude, latitude); } else if ("垫江县" == cityName) { var longitude = 107.336118; var latitude = 30.334042; point = new BMap.Point(longitude, latitude); } else if ("忠县" == cityName) { var longitude = 108.04224; var latitude = 30.30452; point = new BMap.Point(longitude, latitude); } else if ("城口县" == cityName) { var longitude = 108.671036; var latitude = 31.953145; point = new BMap.Point(longitude, latitude); } else if ("巫溪县" == cityName) { var longitude = 109.576402; var latitude = 31.40266; point = new BMap.Point(longitude, latitude); } else if ("巫山县" == cityName) { var longitude = 109.879221; var latitude = 31.087199; point = new BMap.Point(longitude, latitude); } else if ("奉节县" == cityName) { var longitude = 109.468749; var latitude = 31.024849; point = new BMap.Point(longitude, latitude); } else if ("石柱土家族自治县" == cityName) { var longitude = 108.118685; var latitude = 30.006859; point = new BMap.Point(longitude, latitude); } else if ("彭水苗族土家族自治县" == cityName) { var longitude = 108.17085; var latitude = 29.301729; point = new BMap.Point(longitude, latitude); } else if ("酉阳土家族苗族自治县" == cityName) { var longitude = 108.774583; var latitude = 28.848811; point = new BMap.Point(longitude, latitude); } else if ("秀山土家族苗族自治县" == cityName) { var longitude = 109.011853; var latitude = 28.454209; point = new BMap.Point(longitude, latitude); } else if ("东方市" == cityName) { var longitude = 108.656267; var latitude = 19.101378; point = new BMap.Point(longitude, latitude); } else if ("万宁市" == cityName) { var longitude = 110.397709; var latitude = 18.799833; point = new BMap.Point(longitude, latitude); } else if ("五指山市" == cityName) { var longitude = 109.522965; var latitude = 18.782911; point = new BMap.Point(longitude, latitude); } else if ("琼海市" == cityName) { var longitude = 110.47882; var latitude = 19.265073; point = new BMap.Point(longitude, latitude); } else if ("屯昌县" == cityName) { var longitude = 110.105702; var latitude = 19.358194; point = new BMap.Point(longitude, latitude); } else if ("定安县" == cityName) { var longitude = 110.363233; var latitude = 19.686848; point = new BMap.Point(longitude, latitude); } else if ("文昌市" == cityName) { var longitude = 110.803934; var latitude = 19.549335; point = new BMap.Point(longitude, latitude); } else if ("澄迈县" == cityName) { var longitude = 110.010636; var latitude = 19.745166; point = new BMap.Point(longitude, latitude); } else if ("临高县" == cityName) { var longitude = 109.693419; var latitude = 19.920291; point = new BMap.Point(longitude, latitude); } else if ("保亭黎族苗族自治县" == cityName) { var longitude = 109.702907; var latitude = 18.647732; point = new BMap.Point(longitude, latitude); } else if ("陵水黎族自治县" == cityName) { var longitude = 110.045039; var latitude = 18.513155; point = new BMap.Point(longitude, latitude); } else if ("琼中黎族苗族自治县" == cityName) { var longitude = 109.842786; var latitude = 19.041625; point = new BMap.Point(longitude, latitude); } else if ("昌江黎族自治县" == cityName) { var longitude = 109.060164; var latitude = 19.304817; point = new BMap.Point(longitude, latitude); } else if ("白沙黎族自治县" == cityName) { var longitude = 109.453447; var latitude = 19.232744; point = new BMap.Point(longitude, latitude); } else if ("儋州市" == cityName) { var longitude = 109.588035; var latitude = 19.526327; point = new BMap.Point(longitude, latitude); } else if ("红河哈尼族彝族自治州" == cityName) { var longitude = 103.380977; var latitude = 23.380877; point = new BMap.Point(longitude, latitude); } else if ("西双版纳傣族自治州" == cityName) { var longitude = 100.800568; var latitude = 22.023519; point = new BMap.Point(longitude, latitude); } else if ("普洱市" == cityName) { var longitude = 100.972567; var latitude = 22.830712; point = new BMap.Point(longitude, latitude); } else if ("渝北区" == cityName) { var longitude = 106.638135; var latitude = 29.709625; point = new BMap.Point(longitude, latitude); } 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(); moralMap.layer("equipments"); 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.getNorthEast().lng;//东北角经度,大一点 this.northeastLat = baiduBounds.getNorthEast().lat;//东北角纬度,大一点 this.southwestLng = baiduBounds.getSouthWest().lng;//西南角经度坐标,小一点 this.southwestLat = baiduBounds.getSouthWest().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: 'showVoc' == select ? 'showVoc' : 'showDeviceMonitor', name: row['name'], mac: (row['mac']).toLowerCase(), longitude: row['longitude'], latitude: row['latitude'], monitorPointId: row['monitorPointId'], version: row['deviceVersion']['version'], provinceCode: row['monitorPoint']['provinceCode'] }; !!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 === 'showVoc' && !!window['external'] && !!window['external']['showVocInfo']) { window['external'].showChartInfo(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 = "
地址: " + address + "
" return titleOutHtml; } return new BMap.InfoWindow("", winOpts); })(); if (moralMarker["infoWindow"] == undefined) { moralMarker["infoWindow"] = infoWindow; } var mouseOverHandle = option['mouseover']; moralMarker.addEventListener("mouseover", function () { /* var obj = {}; obj['methodName'] = 'deliverMac'; obj['mac'] = option['mac']; var objStr = JSON.stringify(obj); if (!!window['external'] && !!window['external']['callWin']) { window['external'].callWin(objStr); } else { alert(objStr); }*/ moralMap.showSensors = function (jsonData) { var deviceSensors = jsonData; var mac = deviceSensors["mac"]; if (mac == option['mac']) { if (!jsonData.hasOwnProperty('mac')) { infoWindow.setContent(""); infoWindow.redraw(); } else { var adressOutHtml = '' + "时间: " + date + "
"; for (var prop in jsonData) { if (jsonData.hasOwnProperty(prop) && prop != 'ver' && prop != 'methodName' && prop != 'mac' && prop != 'time') { for (var key in sensorsDescriptionMap) { if (prop == key) { var sensorsDescription = sensorsDescriptionMap[key]; } } for (var key in sensorsUnitMap) { if (prop == key) { var sensorsUnit = sensorsUnitMap[key]; if (sensorsUnit == null) { sensorsUnit = ""; } } } adressOutHtml += ('' + sensorsDescription + ":" + jsonData[prop] + sensorsUnit + "
"); } } adressOutHtml += "