From 69a3e436bedfc828930e08cbbac7df57f4fd83cb Mon Sep 17 00:00:00 2001 From: ZhuDongming <773644075@qq.com> Date: Fri, 12 Jun 2020 16:46:03 +0800 Subject: [PATCH] update去除站点层,更改设备图标为站点图标 --- src/main/webapp/js/newmoralmap.js | 1076 ++++++++++++++++++++++++++++++++ src/main/java/com/moral/controller/ScreenController.java | 87 + src/main/java/com/moral/service/impl/DeviceServiceImpl.java | 25 src/main/webapp/view/newmap.jsp | 751 ++++++++++++++++++++++ 4 files changed, 1,901 insertions(+), 38 deletions(-) diff --git a/src/main/java/com/moral/controller/ScreenController.java b/src/main/java/com/moral/controller/ScreenController.java index 269c6a1..23c06ea 100644 --- a/src/main/java/com/moral/controller/ScreenController.java +++ b/src/main/java/com/moral/controller/ScreenController.java @@ -9,35 +9,20 @@ import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Date; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; - -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.collections.MapUtils; -import org.apache.commons.net.ftp.FTPClient; -import org.apache.log4j.Logger; -import org.dom4j.Document; -import org.dom4j.Element; -import org.dom4j.io.SAXReader; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.cglib.beans.BeanMap; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.util.ObjectUtils; -import org.springframework.web.bind.annotation.CrossOrigin; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.servlet.ModelAndView; -import org.xml.sax.InputSource; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; @@ -94,6 +79,29 @@ import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections.MapUtils; +import org.apache.commons.net.ftp.FTPClient; +import org.apache.log4j.Logger; +import org.dom4j.Document; +import org.dom4j.Element; +import org.dom4j.io.SAXReader; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.cglib.beans.BeanMap; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.util.ObjectUtils; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.servlet.ModelAndView; +import org.xml.sax.InputSource; import static com.moral.common.util.ResourceUtil.getValue; import static com.moral.common.util.WebUtils.getParametersStartingWith; @@ -1598,4 +1606,33 @@ } return new ResultBean<List<Map<String, Object>>>(list); } + + @RequestMapping(value = "/newMap-page", method = RequestMethod.GET) + public ModelAndView newMap(ModelAndView model, @RequestParam("areaCode") long code, + @RequestParam("accountId") int accountId) { + Account account = accountService.getAccountById(accountId); + String regionName = areaService.queryFullNameByCode(code); + if (account != null && regionName != null) { + Object sensors = sensorService.queryAll(); + JSONObject params = new JSONObject(); + params.put("regionCode", code); + params.put("regionName", regionName); + params.put("accountId", accountId); + params.put("orgId", account.getOrganizationId()); + params.put("sensors", sensors); + String paramsJson = params.toJSONString(); + model.addObject("mapParams", paramsJson); + model.setViewName("newmap"); + return model; + } else { + StringBuilder msg = new StringBuilder(); + msg.append(" param[0] areaCode:"); + msg.append(code); + msg.append(" param[0] accountId:"); + msg.append(accountId); + log.warn(msg); + model.setViewName("403"); + return model; + } + } } diff --git a/src/main/java/com/moral/service/impl/DeviceServiceImpl.java b/src/main/java/com/moral/service/impl/DeviceServiceImpl.java index e2ffbe1..cc3ce03 100644 --- a/src/main/java/com/moral/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/moral/service/impl/DeviceServiceImpl.java @@ -1,5 +1,16 @@ package com.moral.service.impl; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import javax.annotation.Resource; +import javax.validation.constraints.NotNull; + import com.alibaba.fastjson.TypeReference; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; @@ -29,19 +40,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; - import tk.mybatis.mapper.entity.Example; - -import javax.annotation.Resource; -import javax.validation.constraints.NotNull; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; @Service public class DeviceServiceImpl implements DeviceService { @@ -214,7 +213,7 @@ List<Integer> orgIds = orgMapper.selectLowerOrgIds(orgId); params.put("orgIds", orgIds); deviceList = deviceMapper.selectByMap(params); - loadDeviceState(deviceList); + // loadDeviceState(deviceList); } return deviceList; } diff --git a/src/main/webapp/js/newmoralmap.js b/src/main/webapp/js/newmoralmap.js new file mode 100644 index 0000000..6e08a5b --- /dev/null +++ b/src/main/webapp/js/newmoralmap.js @@ -0,0 +1,1076 @@ +(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 = "<ul class='list'>"; + for (var i = 0; i < rows.length; i++) { + var e = rows[i]; + var state = 'state01'; + var stateName = ''; + var s = e['state'] == undefined ? 0 : e['state']; + if (deviceStates) { + for (var j in deviceStates) { + var deviceState = deviceStates[j]; + if (deviceState.mac == e['mac']) { + s = deviceState.state; + break; + } + } + } + var stateObj = _getStateMap(s); + state = stateObj["state"]; + stateName = stateObj["stateName"]; + var name = e['name']; + 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; + stop1 = stop1_i; + if (len > 8) break; + } + var stop2 = 0; + for (var stop2_i = name.length - 1, len = 0; stop2_i >= 0; stop2_i--) { + len += ((name.charCodeAt(stop2_i) & 0xff00) != 0) ? 2 : 1; + stop2 = stop2_i; + if (len > 10) break; + } + name = name.substring(0, stop1) + "..." + name.substring(stop2, name.length); + } + var li = "<li id='listview_item_" + e['mac'] + "'><span class='list-chart-span' onclick=moralMap.onItermClick(\"" + i + "\",'showVoc')><img src='/img/list.png' width='20px'></span>" + + "<span id='listview_state_" + e['mac'] + "'class='" + state + "'>" + stateName + "</span>" + + "<div>" + name + "</div></li>"; + outHtml += li; + } + outHtml += "</ul>"; + var total = res['total']; + var totalPage = Math.ceil(total / pageSize); + if (totalPage > 1) { + outHtml += "<div id='page' class='page_div'></div>"; + } + $(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; + if (moralMarker["infoWindow"] == undefined) { + moralMarker["infoWindow"] = infoWindow; + } + + //��������������������� + moralMarker.addEventListener("click", function () { + var winOpts = { + width: 250, // ������������������ + height: 160, // ������������������ + // title: getTitleOutHtml(), // ������������������ + offset: new BMap.Size(-8, -5) //��������������������� + } + var winfowText = "<div style='width:250px'>"; + var title = (option["name"] == null) ? "" : option["name"]; + if (title.length > 13) { + title = title.slice(0, 13) + "..."; + } + winfowText += "<p style='width:210px;font:bold 14px/16px arial,sans-serif;margin:0;color:#cc5522;white-space:nowrap;overflow:hidden'" + winfowText += "title='" + option["name"] + "'>"; + winfowText += title + "</p>"; + var listText = '<div id="equ_list" class="listview" style="min-height:50px;overflow:auto;max-height:140px;" ></div>'; + winfowText = winfowText + listText + "</div>"; + var infoWindow = new BMap.InfoWindow(winfowText, winOpts); + 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']; + } + + } + + var sensorsDescriptionMap; + var sensorsUnitMap; + $.ajax({ + url: "getSensorsMap", + type: "get", + dataType: "json", + success: function (data) { + sensorsDescriptionMap = data[0]; + sensorsUnitMap = data[1]; + } + }); + + //���������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/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: 300, // ������������������ + 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 address = (option["address"] == null) ? "" : option["address"]; + if (address.length > 18) { + address = address.slice(0, 18) + "..."; + } + var titleOutHtml = ""; + titleOutHtml += "<p style='width:210px;font:bold 14px/16px arial,sans-serif;margin:0;color:#cc5522;white-space:nowrap;overflow:hidden'" + titleOutHtml += "title='" + option["name"] + "'>"; + titleOutHtml += title + "</p>"; + titleOutHtml += "<p style='height: 18px;line-height: 18px;font-size: 12px'>��������� " + address + "</p>" + 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) { + if (!jsonData.hasOwnProperty('mac')) { + infoWindow.setContent(""); + infoWindow.redraw(); + } else { + var adressOutHtml = '<div style="min-height:20px;overflow:auto;max-height:400px;font-size: 12px;" onmouseover="moralMap.clearCloseInfoWindow()" onmouseout="moralMap.closeInfoWindow()">'; + var y, m, d, h, mm, s; + var date = new Date(jsonData['time']); + y = 1900 + date.getYear(); + m = "0" + (date.getMonth() + 1); + d = "0" + date.getDate(); + h = "0" + date.getHours(); + mm = "0" + date.getMinutes(); + s = "0" + date.getSeconds(); + date = y + "-" + m.substring(m.length - 2, m.length) + "-" + d.substring(d.length - 2, d.length) + " " + h.substring(h.length - 2, h.length) + ":" + mm.substring(mm.length - 2, mm.length) + ":" + s.substring(s.length - 2, s.length); + adressOutHtml += '<p style="height: 18px;line-height: 18px">' + "��������� " + date + " </p>"; + 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 += ('<p style="height: 18px;line-height: 18px">' + sensorsDescription + "���" + jsonData[prop] + sensorsUnit + "</p>"); + } + } + adressOutHtml += "</div>"; + infoWindow.setContent(adressOutHtml); + infoWindow.redraw(); + } + } + /* if (!$.isEmptyObject(sensorInfo)) { + moralMap.openInfoWindow(infoWindow, this._point); //������������������ + }*/ + moralMap.openInfoWindow(infoWindow, this._point); //������������������ + }); + + moralMarker.addEventListener("mouseout", function () { + var obj = {}; + obj['methodName'] = 'stopDeliverMac'; + var objStr = JSON.stringify(obj); + if (!!window['external'] && !!window['external']['callWin']) { + window['external'].callWin(objStr); + } else { + alert(objStr); + } + 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"]); + } + }, + 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) { + 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); + } + } + listView.refreshState(deviceStates); + 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); diff --git a/src/main/webapp/view/newmap.jsp b/src/main/webapp/view/newmap.jsp new file mode 100644 index 0000000..89b9c76 --- /dev/null +++ b/src/main/webapp/view/newmap.jsp @@ -0,0 +1,751 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@page isELIgnored="false" %> +<% + String version = "1.000004"; + response.setHeader("Cache-Control", "no-store"); + response.setHeader("Pragrma", "no-cache"); + response.setDateHeader("Expires", 0); +%> +<!DOCTYPE html> +<head> + <meta charset="utf-8"/> + <title></title> + <script type="text/javascript" + src="http://api.map.baidu.com/api?v=2.0&ak=rER1sgBIcQxkfNSlm2wmBGZGgEERrooM"></script> + <script type="text/javascript" src="/js/jquery.min.js"></script> + <script type="text/javascript" src="/js/utils.js"></script> + <script type="text/javascript"> + if (typeof (JSON) == 'undefined') { + $.getScript("js/json2.js"); + } + </script> + <script type="text/javascript" src="/js/newmoralmap.js?version=<%=version%>"></script> + <script type="text/javascript" src="/js/paging.js"></script> +</head> +<style type="text/css"> + body, + html, + #mapCanvas { + width: 100%; + height: 100%; + overflow: hidden; + margin: 0; + z-index: 0; + font-size: 14px; + font-family: "������������"; + } + + .anchorBL { + display: none; + } + + .main_body { + border: 0; + margin: 0; + width: 100%; + height: 100%; + position: relative; + } + + * { + margin: 0; + padding: 0; + list-style: none; + } + + a { + color: #1900c6; + text-decoration: none; + cursor: pointer; + font-size: 14px; + font-weight: 300; + } + + a:hover { + text-decoration: underline; + color: #e60012; + } + + #popup_box { + top: 75px; + left: 20px; + position: absolute; + z-index: 1; + height: 390px; + width: 320px; + margin: 0 auto; + padding: 10px 25px; + border: 1px solid #eee; + background: white; + display: none; + } + + /*.listview { + overflow-x: hidden; + overflow-y: auto; + margin: 0; + padding: 0; + border: 0; + height: 390px; + width: 92%; + position: absolute; + }*/ + + + .search_box { + /*border-bottom: 1px solid #eee;*/ + border-radius: 4px; + top: 20px; + left: 21px; + clear: both; + zoom: 1; + padding-top: 10px; + padding-right: 15px; + position: absolute; + z-index: 1; + height: 36px; + width: 354px; + background: white; + } + + + .search_box input { + margin: 0; + width: 245px; + float: right; + height: 24px; + line-height: 24px + } + + .search_box button { + margin-left: 10px; + float: right; + width: 70px; + height: 28px; + line-height: 28px; + cursor: pointer; + } + + .list { + padding: 10px 0; + clear: both; + zoom: 1 + } + + .list-chart-span { + cursor: pointer; + background-color: #4c9bf1 + } + + .list li { + border-bottom: 1px dotted #eee; + line-height: 25px; + height: 25px; + font-size: 12px; + /*cursor: pointer;*/ + } + + .list span { + float: right; + position: relative; + right: 5px; + border-radius: 4px; + width: 40px; + text-align: center; + height: 20px; + line-height: 20px; + font-size: 12px; + font-weight: bolder; + color: lightgrey; + margin-right: 8px; + margin-top: 2.5px; + } + + .list .state00 { + background-color: #00C600 + } + + .list .state01 { + background-color: #FF9; + } + + .list .state02 { + background-color: #F93; + } + + .list .state03 { + background-color: #F00; + } + + .list .state04 { + background-color: #488FD2; + } + + /* + * ������������������---������������ + */ + + .page_div { + margin: 0 auto; + font-size: 10px; + font-family: "microsoft yahei"; + color: #666666; + box-sizing: border-box; + text-align: center; + } + + /* + * ������������������ + */ + + .page_div a { + min-width: 23px; + height: 22px; + border: 1px solid #dce0e0 !important; + text-align: center; + margin: 0 0px; + margin-right: 1px; + cursor: pointer; + line-height: 22px; + color: #666666; + font-size: 10px; + display: inline-block; + } + + #firstPage, + #lastPage { + width: 40px; + color: #0073A9; + border: 1px solid #0073A9 !important; + } + + #prePage, + #nextPage { + width: 50px; + color: #0073A9; + border: 1px solid #0073A9 !important; + } + + .page_div .current { + background-color: #0073A9; + border-color: #0073A9; + color: #FFFFFF; + } + + .totalPages { + margin: 0 10px; + } + + .totalPages span, + .totalSize span { + color: #0073A9; + margin: 0 5px; + } + + .equ-data-box { + width: 351px; + border: 1px solid #dad5d5; + background-color: #f6f6f6; + padding: 12px 0 12px 0; + border-radius: 3px; + margin: 10px auto; + overflow: hidden; + zoom: 1; + } + + .equ-data-box .equ-data-list { + width: 330px; + margin: 0 0 0 10px; + border-left: 1px solid #d0cdcd; + border-top: 1px solid #d0cdcd; + border-bottom: 1px solid #d0cdcd; + overflow: hidden; + zoom: 1; + } + + .equ-data-box .equ-data-list li { + background: url(/img/list_li_bg.png) left top repeat-x; + width: 109px; + height: 165px; + float: left; + text-align: center; + color: #282828; + border-right: 1px solid #d0cdcd + } + + .equ-data-box .equ-data-list li p { + height: 55px; + padding-top: 12px; + line-height: 55px; + font-size: 18px + } + + .equ-data-box .equ-data-list li span { + height: 60px; + line-height: 50px; + display: block; + color: #fff; + font-size: 40px + } + + .equ-data-box .equ-data-list li em { + font-size: 14px; + line-height: 28px; + font-style: normal; + display: block + } + + .equ-data-box .equ-data-list li .grade00 { + background: url(/img/list_num_green.png) left top no-repeat + } + + .equ-data-box .equ-data-list li .grade01 { + color: #282828; + background: url(/img/list_num_yellow.png) left top no-repeat + } + + .equ-data-box .equ-data-list li .grade02 { + background: url(/img/list_num_orange.png) left top no-repeat + } + + .equ-data-box .equ-data-list li .grade03 { + background: url(/img/list_num_red.png) left top no-repeat + } + + .tools_box { + position: absolute; + height: 120px; + width: 400px; + right: 1px; + top: 20px; + z-index: 1; + } + + .tools_box .charts_btn { + position: relative; + float: right; + margin: 0; + border: 0; + height: 85px; + width: 85px; + background: url(/img/charts_btn_bg_1.png) left top no-repeat; + background-size: 70%; + } + + .tools_box .charts_btn:hover { + cursor: pointer; + background: url(/img/charts_btn_bg_2.png) left top no-repeat; + background-size: 70%; + } +</style> +<body> +<div class="main_body"> + <div class="tools_box"> + <div class="charts_btn"> + </div> + </div> + <%-- <div class="search_box"> + <button id="searchBtn" type="button">������</button> + <textarea style="width: 200px;height:200px;" id="searchParam"></textarea> + </div>--%> + <!-- <div id="popup_box"> + <div id="equ_list" class="listview"> + </div> + </div> --> + <div id="mapCanvas"></div> + <div id="mapParams" style="display: none;"> + ${requestScope.mapParams} + </div> +</div> +</body> + +</html> +<script> + //��������������� + (function ($) { + var moralMap = window.moralMap; + var params = $.parseJSON($("#mapParams").html()); + moralMap['params'] = params; + var regionCode = params["regionCode"]; + var provinceCode = regionCode.toString().substring(0, 2) + "0000"; + var mapType = getUrlParam("mapType"); + var mapOption = {}; + if (!!mapType && !!eval(mapType)) { + mapOption["mapType"] = eval(mapType); + } + var showZoom = getUrlParam("showZoom"); + //������������������������������ + moralMap.mapInit(params["regionName"], mapOption, showZoom); + //������������ + var listView = moralMap.initListView({id: "#equ_list", pageSize: 12}); + window["listView"] = listView; + + //���������������������click������������ + function showEqus(obj) { + + var params = moralMap['params']; + var mpoint = obj.currentTarget.getOption(); + //$("#searchParam").val(mpoint['name']); + var url = 'get-devices-by-mid-oid?mpId=' + mpoint['id'] + "&orgId=" + params['orgId']; + listView.load(url); + moralMap.showPopupbox("#popup_box"); + } + + function loadLazy(url, paramMap, callBack, lazyKeyer) { + if (lazyKeyer == undefined) { + lazyKeyer = moralMap.lazyKeyer; + } + var key = lazyKeyer(); + setTimeout(function () { + //���������������������������,������������������ + if (key == undefined || lazyKeyer(key)) { + $.ajax({ + type: "get", + url: url, + data: paramMap, + async: false, + cache: false, + success: function (res) { + if (callBack != null) { + if (res.code == 1 && lazyKeyer(key)) { + callBack(res.data); + } + } + } + }); + } + }, 500); + + } + + function loadOverlays(url, callback) { + //������������ + var oldMarkerList = moralMap.getHorizonMarkers(); + moralMap.addOverlays(oldMarkerList); + //������������ + //������������������������,������������������ + if (moralMap.isOverBounds() || moralMap.getOverlays().length == 0) { + var maxBounds = moralMap.getMaxBounds(); + var paramMap = {}; + paramMap["orgId"] = params['orgId']; + paramMap["regionCode"] = params['regionCode']; + // ��������������������� + paramMap["Fe"] = maxBounds.northeastLat;//��������������������������� + paramMap["Ge"] = maxBounds.northeastLng;//��������������������������� + paramMap["Ke"] = maxBounds.southwestLat;//��������������������������������� + paramMap["Le"] = maxBounds.southwestLng;//��������������������������������� + // $.extend(paramMap,maxBounds); + loadLazy(url, paramMap, callback); + } + } + + function addOverEquipments(jsonData) { + if (moralMap.layer() == "equipments") { + var objs = jsonData = null ? [] : jsonData; + for (var i in objs) { + var obj = objs[i]; + if (moralMap.getEquipment(obj["mac"]) == null) { + obj['mouseover'] = function (type) { + if (type.target.getData() == null) { + //��������������������������������������������������� ������������������ + //refreshAllState(); + } + } + obj['click'] = function () { + var _obj = this.getOption(); + if (_obj['mac'] == null) { + alert("mac���������������������������������������"); + return; + } + var equ = { + methodName: 'showVoc', + name: _obj['name'], + mac: (_obj['mac']).toLowerCase(), + longitude: _obj['longitude'], + latitude: _obj['latitude'], + monitorPointId: _obj['monitorPointId'], + version: _obj['deviceVersion']['version'], + provinceCode: provinceCode + } + var equStr = JSON.stringify(equ); + if (window["console"] != undefined) { + } + if (!!window['external'] && !!window['external']['callWin']) { + window['external'].callWin(equStr); + } else if (!!window['external'] && !!window['external']['showVocInfo']) { + window['external'].showVocInfo(equStr); + } else { + alert(equStr); + } + } + var moralMask = new moralMap.Equipment(obj); + moralMap.addOverlay(moralMask); + } + } + } + } + + function addOverMpoints(data) { + if (moralMap.layer() == "monitorpoints") { + var mpoints = data = null ? [] : data; + for (var i in mpoints) { + var mpParam = mpoints[i]; + if (moralMap.getMpoint(mpParam["id"]) == null) { + mpParam['click'] = showEqus; + var mpObj = new moralMap.Monitorpoint(mpParam); + moralMap.addOverlay(mpObj); + } + } + } + } + + //������load + moralMap.addEventListener("load", function (type, target) { + var paramMap = {}; + var bounds = moralMap.getBounds(); + paramMap["areaCode"] = params['areaCode']; + paramMap["orgId"] = params['orgId']; + // ��������������������� + paramMap["Fe"] = bounds.northeastLat;//��������������������������� + paramMap["Ge"] = bounds.northeastLng;//��������������������������� + paramMap["Ke"] = bounds.southwestLat;//��������������������������������� + paramMap["Le"] = bounds.southwestLng;//��������������������������������� + loadLazy("getMonitorpointList", paramMap, addOverMpoints); + //startRefreshPage(); + showGrid(); + }); + //��������������������� ���������������,��������� + moralMap.addEventListener("tilesloaded", function (type, target) { + showGrid(); + }); + + //map��������������� + // TODO ������ + function getBounds() { + var bs = moralMap.getBounds(); //������������������������������������ + // var bssw = bs.getSouthWest(); //���������������������������(������������) + // var bsne = bs.getNorthEast(); //���������������������������(������������) + if (!getBounds.topLeftAnchor) { + getBounds.topLeftAnchor = {}; + getBounds.topLeftAnchor.x0 = bs.southwestLng; + getBounds.topLeftAnchor.y0 = bs.northeastLat; + } + return {'x1': bs.southwestLng, 'y1': bs.southwestLat, 'x2': bs.northeastLng, 'y2': bs.northeastLat}; + } + + /** + * ������������ + */ + // TODO ������ + function showGrid() { + var isShowGrid = getUrlParam("isShowGrid"); + if (!!isShowGrid) { + $(".tools_box").hide(); + } + // if(!isShowGrid||moralMap.getZoom()<14){ + if (!isShowGrid || moralMap.getZoom() < 14) { + return; + } + var XY = getBounds(); + var polygons = []; + console.log(XY); + var X1 = XY.x1; + var Y2 = XY.y2; + var X0 = getBounds.topLeftAnchor.x0; + var Y0 = getBounds.topLeftAnchor.y0; + var width = 0.0063; + var height = 0.0048; + // var multiple = 1000000; + if (!!getBounds.topLeftAnchor) { + X1 = X0 + Math.ceil((X1 - X0) / width - 1) * width; + Y2 = Y0 + Math.ceil((Y2 - Y0) / height) * height; + } + for (var i = X1; i < XY.x2; i = i + width) { + for (var j = Y2; j > XY.y1; j = j - height) { + //���������������������������������������������������:������������������Point���������������������������,���������������������������,���������������������������,���������������������������������������������������������������������������������������������������������������,������������������������������������������������������������������ + var polygon = new BMap.Polygon([ + new BMap.Point(i, j), //������������������ + new BMap.Point(i, j - height), //������������������ + new BMap.Point(i + width, j - height), //������������������ + new BMap.Point(i + width, j) //������������������ + ], {strokeColor: "blue", strokeWeight: 2, strokeOpacity: 0.5, fillOpacity: 0.1}); + // polygon .addEventListener("click",function clickFunction(){ + // alert("������������������"); + // }); + // moralMap.addOverlay(polygon); + polygons.push(polygon); + } + } + moralMap.addOverlays(polygons); + if (!!showGrid.polygons) { + moralMap.removeOverlays(showGrid.polygons); + } + showGrid.polygons = polygons; + } + + // ������������������ ������������ + moralMap.addEventListener("click", function (type, target) { + //moralMap.closePopupbox("#popup_box"); + }); + //������������������������������������������ + moralMap.addEventListener('zoomstart', function (type) { + }); + //������������������������������������������ + moralMap.addEventListener('zoomend', function (type) { + loadOverlays("get-devices", addOverEquipments); + //moralMap.closePopupbox("#popup_box"); + }); + moralMap.addEventListener('moveend', function (type) { + loadOverlays("get-devices", addOverEquipments); + //moralMap.closePopupbox("#popup_box"); + }); + //��������������������� + $("#searchBtn").click( + function (e) { + var param = encodeURI($("#searchParam").val()); + //moralMap.showPopupbox("#popup_box"); + var url = 'get-devices-for-popup?name=' + param + "&orgId=" + params['orgId']; + listView.load(url); + } + ); + $("#searchParam").keydown(function (event) { + if (event.keyCode == 13) { + $("#searchBtn").trigger("click"); + } + }) + //������������������������������ + $(".charts_btn").click( + function (e) { + var obj = {}; + obj['methodName'] = 'showChart'; + var objStr = JSON.stringify(obj); + if (!!window['external'] && !!window['external']['callWin']) { + window['external'].callWin(objStr); + } else if (!!window['external'] && !!window['external']['showChartInfo']) { + window['external'].showChartInfo(""); + } else { + alert(objStr); + } + } + ); + //������������ + + })(jQuery); + var _intervalNum = -1; + + function startRefreshPage() { + if (_intervalNum == -1) { + _intervalNum = self.setInterval(function () { + refreshAllState(); + }, 10000); + } + setTimeout(function () { + refreshAllState(); + }, 5000); + } + + function stopRefreshPage() { + window.clearInterval(_intervalNum); + _intervalNum = -1; + } + + //������������ + function refreshAllState() { + var parma = {}; + /* if(moralMap.isPopupBoxShow("#popup_box")) { + var popupEquMacs = moralMap.getPopupEquMacs(); + if(popupEquMacs!=null&&popupEquMacs.length>0){ + parma["popupEquMacs"] = popupEquMacs; + } + } */ + //������������ + var oldMarkerList = moralMap.getHorizonMarkers(true); + var markerKeys = []; + key = moralMap.layer() == "monitorpoints" ? "id" : "mac"; + for (var i in oldMarkerList) { + var marker = oldMarkerList[i]; + var key_value = marker.getOption()[key]; + if (key_value != null) { + markerKeys.push(key_value); + } + } + parma["layer"] = moralMap.layer(); + parma["markerKeys"] = markerKeys; + parma["areaCode"] = moralMap['params']["areaCode"]; + parma["orgId"] = moralMap['params']["orgId"]; + if ((!!parma["popupEquMacs"] && !!parma["popupEquMacs"].length) + || (!!parma["markerKeys"] && !!parma["markerKeys"].length)) { + $.ajax({ + type: "post", + url: "get-real-state-data", + data: JSON.stringify(parma), + dataType: "json", + contentType: "application/json;charset=utf-8", + cache: false, + async: true, + success: function (data) { + if (data != null && typeof data === 'object') { + var resultMap = data["extData"]; + if (resultMap == null) { + return; + } + var markers = resultMap["markers"]; + var layer = resultMap["layer"]; + if (markers != null && markers.length > 0) { + if (layer == "monitorpoints") { + for (var a_i in markers) { + var marker = markers[a_i]; + var marker_id = marker["id"]; + var mpoint = moralMap.getMpoint(marker_id); + if (mpoint != null) { + mpoint.refreshState(marker["state"]); + } +// mpoint.refreshState(4); + } + } else { + for (var b_i in markers) { + var marker = markers[b_i]; + var marker_mac = marker["mac"]; + var equipment = moralMap.getEquipment(marker_mac); + if (equipment != null) { + equipment.refreshState(marker); + } + } + } + + var equ = { + methodName: 'refreshState', + markers: markers, + layer: layer + } + var equStr = JSON.stringify(equ); + if (window["console"] != undefined) { + } + if (!!window['external'] && !!window['external']['callWin']) { + window['external'].callWin(equStr); + } + } + if (resultMap["popupEquStates"] != null) { + listView.refreshState(resultMap["popupEquStates"]); + } + } + } + }); + } + } + + function callJS(jsonData) { + var jsonData = JSON.parse(jsonData); + var methodName = jsonData.methodName; + // $("#searchParam").val(JSON.stringify(jsonData)); + if ("JumpBaiduMap" == methodName) { + moralMap.callJS(jsonData); + } else if ("RefreshState" == methodName) { + var states = jsonData.states; + moralMap.refreshState(states); + } else if ("DeliverSensors" == methodName) { + moralMap.showSensors(jsonData); + } + } +</script> -- Gitblit v1.8.0