From f32e22e52376cabe49e8c7d1f52adb4b1aebffd3 Mon Sep 17 00:00:00 2001
From: ZhuDongming <773644075@qq.com>
Date: Wed, 20 Nov 2019 17:15:08 +0800
Subject: [PATCH] update:移动到设备marker上实时显示因子数据

---
 src/main/java/com/moral/service/impl/SensorServiceImpl.java |   20 
 src/main/resources/mapper/SensorMapper.xml                  |   15 
 src/main/webapp/js/moralmap.js                              | 1923 ++++++++++++++++++----------------
 src/main/java/com/moral/service/SensorService.java          |    4 
 src/main/java/com/moral/mapper/SensorMapper.java            |    2 
 src/main/webapp/view/map.jsp                                | 1273 ++++++++++++----------
 src/main/java/com/moral/controller/ScreenController.java    |   18 
 7 files changed, 1,733 insertions(+), 1,522 deletions(-)

diff --git a/src/main/java/com/moral/controller/ScreenController.java b/src/main/java/com/moral/controller/ScreenController.java
index 20c720a..042724a 100644
--- a/src/main/java/com/moral/controller/ScreenController.java
+++ b/src/main/java/com/moral/controller/ScreenController.java
@@ -544,6 +544,24 @@
         }
     }
 
+    @GetMapping("/getSensorsMap")
+    public ResultBean getSensorsMapOnly(String mac){
+        Map<String, String> paramMap = sensorService.getSensorsMapOnly(mac);
+        ResultBean<Map<String, String>> resultBean = new ResultBean();
+        resultBean.setData(paramMap);
+        resultBean.setCode(ResultBean.SUCCESS);
+        return resultBean;
+    }
+
+    @GetMapping("/getSensorsUnitMap")
+    public ResultBean getSensorsUnitMap(String mac){
+        Map<String, String> paramMap = sensorService.getSensorsUnitMap(mac);
+        ResultBean<Map<String, String>> resultBean = new ResultBean();
+        resultBean.setData(paramMap);
+        resultBean.setCode(ResultBean.SUCCESS);
+        return resultBean;
+    }
+
     @RequestMapping(value = "/get-monitorpoints", method = RequestMethod.GET)
     @ResponseBody
     public ResultBean getMonitorpointList(@RequestParam("orgId") String orgId, MapBounds mapBounds,
diff --git a/src/main/java/com/moral/mapper/SensorMapper.java b/src/main/java/com/moral/mapper/SensorMapper.java
index f50008a..ff015e7 100644
--- a/src/main/java/com/moral/mapper/SensorMapper.java
+++ b/src/main/java/com/moral/mapper/SensorMapper.java
@@ -27,4 +27,6 @@
     List<Map<String,Object>> getSensorByMonitorPointId(@Param("monitor_point_id")String monitor_point_id);
 
     List<Sensor> getSensorsByMac(Map<String, Object> parameters);
+
+    List<Sensor> getSensorsByMacOnly(@Param("mac") String mac);
 }
\ No newline at end of file
diff --git a/src/main/java/com/moral/service/SensorService.java b/src/main/java/com/moral/service/SensorService.java
index dad9692..f1b9365 100644
--- a/src/main/java/com/moral/service/SensorService.java
+++ b/src/main/java/com/moral/service/SensorService.java
@@ -33,4 +33,8 @@
     List<Map<String,Object>> getSensorByMonitorPointId(String monitor_point_id);
 
     Map<String, String> getSensorsMap(Map<String, Object> parameters) throws Exception;
+
+    Map<String, String> getSensorsMapOnly(String mac);
+
+    Map<String, String> getSensorsUnitMap(String mac);
 }
diff --git a/src/main/java/com/moral/service/impl/SensorServiceImpl.java b/src/main/java/com/moral/service/impl/SensorServiceImpl.java
index e26a7f7..1638cb7 100644
--- a/src/main/java/com/moral/service/impl/SensorServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/SensorServiceImpl.java
@@ -110,4 +110,24 @@
         }
         return sensorMap;
     }
+
+    @Override
+    public Map<String, String> getSensorsMapOnly(String mac) {
+        List<Sensor> sensors = sensorMapper.getSensorsByMacOnly(mac);
+        Map<String, String> sensorMap = new HashMap<>();
+        for (Sensor sensor : sensors) {
+            sensorMap.put(sensor.getSensorKey(), sensor.getDescription());
+        }
+        return sensorMap;
+    }
+
+    @Override
+    public Map<String, String> getSensorsUnitMap(String mac) {
+        List<Sensor> sensors = sensorMapper.getSensorsByMacOnly(mac);
+        Map<String, String> sensorMap = new HashMap<>();
+        for (Sensor sensor : sensors) {
+            sensorMap.put(sensor.getSensorKey(), sensor.getUnit());
+        }
+        return sensorMap;
+    }
 }
diff --git a/src/main/resources/mapper/SensorMapper.xml b/src/main/resources/mapper/SensorMapper.xml
index ccfa2cf..d4fb2bf 100644
--- a/src/main/resources/mapper/SensorMapper.xml
+++ b/src/main/resources/mapper/SensorMapper.xml
@@ -159,4 +159,19 @@
             AND d.mac =	#{mac}
         </if>
     </select>
+
+    <select id="getSensorsByMacOnly" resultMap="BaseResultMap">
+        SELECT
+        DISTINCT s.*
+        FROM
+        sensor s,
+        device_version_sensor dvs,
+        device d
+        WHERE
+        s.id = dvs.sensor_id
+        AND dvs.device_version_id = d.device_version_id
+        <if test="mac != null">
+            AND d.mac =	#{mac}
+        </if>
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/webapp/js/moralmap.js b/src/main/webapp/js/moralmap.js
index fe910a3..f4b025b 100644
--- a/src/main/webapp/js/moralmap.js
+++ b/src/main/webapp/js/moralmap.js
@@ -1,1030 +1,1097 @@
-(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 = {
+(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]);
+        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);
+        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;
+        && 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];
+        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("������������������������������������!");
+        // ���������������������������������������,���������������������
+        // ���������������������������
+        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;
+                    }
                 }
-            }, 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){
+        if (!!baiduBounds) {
             this.northeastLng = baiduBounds.getNorthEast().lng;//���������������������������
             this.northeastLat = baiduBounds.getNorthEast().lat;//���������������������������
             this.southwestLng = baiduBounds.getSouthWest().lng;//���������������������������������
             this.southwestLat = baiduBounds.getSouthWest().lat;//���������������������������������
-		}else{
+        } 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);
-			  }
-		}
+    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);
+        return isOver;
+    }
+    moralMap.addOverlay = function (overlay) {
+        if (overlay.getMap() != baiduMap) {
+            // setTimeout(function(){
             baiduMap.addOverlay.call(baiduMap, overlay);
-		}
-	}
-	moralMap.addOverlays = function(overlays) {
-		if(overlays != null && typeof overlays == 'object') {
-			for(var i in overlays) {
-				moralMap.addOverlay(overlays[i]);
-			}
-		}
+            // },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) {
+    }
+    moralMap.removeOverlay = function (overlay) {
         // baiduMap.removeOverlay(overlay);
-		baiduMap.removeOverlay.apply(baiduMap, arguments);
-	}
-	moralMap.removeOverlays = function(overlays) {
-        if(overlays != null && typeof overlays == 'object') {
+        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"]){
+    }
+    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.openInfoWindow = function () {
         moralMap.clearCloseInfoWindow();
-        baiduMap.openInfoWindow.apply(baiduMap, arguments);; //������������������
-	}
-	moralMap.closeInfoWindow = function() {
+        baiduMap.openInfoWindow.apply(baiduMap, arguments); //������������������
+    }
+    moralMap.closeInfoWindow = function () {
         var timer = setTimeout(function () {
             baiduMap.closeInfoWindow.apply(baiduMap, arguments);
             moralMap["_closeInfoWinTimer"] = null;
-        },1200);
+        }, 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 () {
+    }
+    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){
+        }, 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'],
+        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){
+            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']){
+        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);
+        } 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);
+                    }
+                }
+            }
+        }
 
-	}
-	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 _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'];
+                                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 + "\",'chart')><img src='/img/chart.png'></span>"
+                                    + "<span id='listview_state_" + e['mac'] + "'class='" + state + "'>" + stateName + "</span>" +
+                                    "<div style='cursor: pointer;'  onclick=moralMap.onItermClick(\"" + i + "\")>" + name + "</div></li>";
+                                outHtml += li;
+                            }
+                            outHtml += "</ul>";
+                            var total = 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);
+                                    }
+                                })
+                            }
+                        }
 
-		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'];
-								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 + "\",'chart')><img src='/img/chart.png'></span>"
-									+"<span id='listview_state_" + e['mac'] + "'class='" + state + "'>" + stateName + "</span>" +
-									"<div style='cursor: pointer;'  onclick=moralMap.onItermClick(\"" + i + "\")>" + name + "</div></li>";
-								outHtml += li;
-							}
-							outHtml += "</ul>";
-							var total = 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){
+        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) //���������������������
-			}
+                }
+            },
+            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 += "<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>";
-				return titleOutHtml;
-			}
+            function getTitleOutHtml() {
+                //title���������������...
+                var title = (option["name"] == null) ? "" : option["name"];
+                if (title.length > 13) {
+                    title = title.slice(0, 13) + "...";
+                }
+                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>";
+                return titleOutHtml;
+            }
 
-			function getAdressOutHtml() {
-				var address = (option["address"] == null) ? "" : option["address"];
-				if(address.length > 18) {
-					address = address.slice(0, 18) + "...";
-				}
-				var adressOutHtml = "";
-				adressOutHtml += "<div onmouseover='moralMap.clearCloseInfoWindow()'";
-                adressOutHtml +=	"onmouseout='moralMap.closeInfoWindow()'";
-                adressOutHtml	+=" style='font:12px arial,sans-serif;margin-top:12px'><table cellspacing='0' style='overflow:hidden;table-layout:fixed;width:100%;font:12px arial,sans-serif'>";
-				adressOutHtml += "<tbody><tr><td style='vertical-align:top;width:38px;white-space:nowrap;word-break:keep-all'>���������&nbsp;</td><td style='line-height:16px'>";
-				adressOutHtml += address + "&nbsp;";
-				adressOutHtml += "</td></tr>";
+            function getAdressOutHtml() {
+                var address = (option["address"] == null) ? "" : option["address"];
+                if (address.length > 18) {
+                    address = address.slice(0, 18) + "...";
+                }
+                var adressOutHtml = "";
+                adressOutHtml += "<div onmouseover='moralMap.clearCloseInfoWindow()'";
+                adressOutHtml += "onmouseout='moralMap.closeInfoWindow()'";
+                adressOutHtml += " style='font:12px arial,sans-serif;margin-top:12px'><table cellspacing='0' style='overflow:hidden;table-layout:fixed;width:100%;font:12px arial,sans-serif'>";
+                adressOutHtml += "<tbody><tr><td style='vertical-align:top;width:38px;white-space:nowrap;word-break:keep-all'>���������&nbsp;</td><td style='line-height:16px'>";
+                adressOutHtml += address + "&nbsp;";
+                adressOutHtml += "</td></tr>";
                 //adressOutHtml += "<tr><td style='width:98%;padding-top:10px;'colspan='2'><a href='javascript:void(0);' style='display:block;position: relative;float: right;' onclick='moralMap.showPointMonitor("+option.id+")'>������������>></a></td></tr>";
                 adressOutHtml += "</tbody></table></div>";
-				return adressOutHtml;
-			}
-			return new BMap.InfoWindow(getAdressOutHtml(), winOpts);
-		})();
-		if(moralMarker["infoWindow"] == undefined) {
-			moralMarker["infoWindow"] = infoWindow;
-		}
-		//���������������������
-		moralMarker.addEventListener("mouseover", function() {
-			moralMap.openInfoWindow(infoWindow, this._point); //������������������
-		});
-		moralMarker.addEventListener("mouseout", function() {
+                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'];
-		}
+        });
+        //==================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) //���������������������
-			}
+    //���������mac���key������
+    //��������������� ������MoralMark������
+    moralMap.Equipment = function (option) {
+        var sensorsMap;
+        var sensorsUnitMap;
+        $.ajax({
+            url: "getSensorsMap?mac=" + option['mac'],
+            type: "get",
+            dataType: "json",
+            success: function (data) {
+                sensorsMap = data.data;
+            }
+        });
 
-			function getTitleOutHtml() {
-				//title���������������...
-				var title = (option["name"] == null) ? "" : option["name"];
-				if(title.length > 13) {
-					title = title.slice(0, 13) + "...";
-				}
-				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>";
-				return titleOutHtml;
-			}
+        $.ajax({
+            url: "getSensorsUnitMap?mac=" + option['mac'],
+            type: "get",
+            dataType: "json",
+            success: function (data) {
+                sensorsUnitMap = data.data;
+            }
+        });
 
-			function getAdressOutHtml() {
-				var address = (option["address"] == null) ? "" : option["address"];
-				if(address.length > 18) {
-					address = address.slice(0, 18) + "...";
-				}
-				var adressOutHtml = "";
-				adressOutHtml += "<div onmouseover='moralMap.clearCloseInfoWindow()'";
-                adressOutHtml +=	"onmouseout='moralMap.closeInfoWindow()'";
-                adressOutHtml	+=" style='font:12px arial,sans-serif;margin-top:12px'><table cellspacing='0' style='overflow:hidden;table-layout:fixed;width:100%;font:12px arial,sans-serif'>";
-				adressOutHtml += "<tbody><tr><td style='vertical-align:top;width:38px;white-space:nowrap;word-break:keep-all'>���������&nbsp;</td><td style='line-height:16px'>";
-				adressOutHtml += address + "&nbsp;";
-				adressOutHtml += "</td></tr>";
-                adressOutHtml += "</tbody></table></div>";
-                //$("#searchParam").val(address);
-				return adressOutHtml;
-			}
-			return new BMap.InfoWindow(getAdressOutHtml(), winOpts);
-		})();
+        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: 300, // ������������������
+                title: getTitleOutHtml(), // ������������������
+                offset: new BMap.Size(-8, -5) //���������������������
+            }
 
-		/*var infoWindow = (function() {
-			//���������������
-			var winOpts = {
-				width: option["online_width"], // ������������������
-				height:option["online_height"], // ������������������
-				title: getTitleOutHtml(), // ������������������
-				offset: new BMap.Size(-2, -10) //���������������������
-			}
+            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'>���������&nbsp;" + address + "</p>"
+                return titleOutHtml;
+            }
 
-			function getTitleOutHtml() {
-				//title���������������...
-				var title = (option["name"] == null) ? "" : option["name"];
-				if(title.length > 13) {
-					title = title.slice(0, 13) + "...";
-				}
-				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>";
-				return titleOutHtml;
-			}
-			return new BMap.InfoWindow("", winOpts);
-		})();
-		var dataHandle = {
-			_getDataOutHtml: function(data) {
-			    if(data==null||data["state"]==4){
-					return "<br/><h3>������������������������,������������������!</h3>";
-				}
-				var mac = data['mac'];
-				var itme_mac_key = "item-" + mac + "-" + key;
-				var dataOutHtml = "<div id='"+itme_mac_key+"' class='equ-data-box'><ul class='equ-data-list'>";
-				for(var key in data) {
-					if($.inArray(key,showSensorKeys)!=-1) {
-						var dataValue = data[key];
-						var name = sensorNames[key][0];
-						var unit = sensorNames[key][1];
-						var itme_state = dataHandle._getSensorState(data, key);
+            return new BMap.InfoWindow("", winOpts);
+        })();
+
+        /*var infoWindow = (function() {
+            //���������������
+            var winOpts = {
+                width: option["online_width"], // ������������������
+                height:option["online_height"], // ������������������
+                title: getTitleOutHtml(), // ������������������
+                offset: new BMap.Size(-2, -10) //���������������������
+            }
+
+            function getTitleOutHtml() {
+                //title���������������...
+                var title = (option["name"] == null) ? "" : option["name"];
+                if(title.length > 13) {
+                    title = title.slice(0, 13) + "...";
+                }
+                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>";
+                return titleOutHtml;
+            }
+            return new BMap.InfoWindow("", winOpts);
+        })();
+        var dataHandle = {
+            _getDataOutHtml: function(data) {
+                if(data==null||data["state"]==4){
+                    return "<br/><h3>������������������������,������������������!</h3>";
+                }
+                var mac = data['mac'];
+                var itme_mac_key = "item-" + mac + "-" + key;
+                var dataOutHtml = "<div id='"+itme_mac_key+"' class='equ-data-box'><ul class='equ-data-list'>";
+                for(var key in data) {
+                    if($.inArray(key,showSensorKeys)!=-1) {
+                        var dataValue = data[key];
+                        var name = sensorNames[key][0];
+                        var unit = sensorNames[key][1];
+                        var itme_state = dataHandle._getSensorState(data, key);
 //						var itme_name_mac_key = "item-name-" + mac + "-" + key;
-						var itme_data_mac_key = "item-data-" + mac + "-" + key;
-						var item = "<li>";
+                        var itme_data_mac_key = "item-data-" + mac + "-" + key;
+                        var item = "<li>";
                         item += "<p>"+name+"</p>";
                         item += "<span id='"+itme_data_mac_key+"' class='"+itme_state+"'>"+dataValue+"</span>";
                         item += "<em>"+unit+"</em>";
-						item += "</li>";
-						dataOutHtml += item;
-					}
+                        item += "</li>";
+                        dataOutHtml += item;
+                    }
 
-				}
-				dataOutHtml += "</ul></div>";
-				return dataOutHtml;
-			},
-			_getSensorState: function(data, key) {
-				var grade="grade";
+                }
+                dataOutHtml += "</ul></div>";
+                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){
+                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($.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){
+        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();
-		});
+            }
+            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 () {
+            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);
+            }
 
-		//==================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!=""){
+            moralMap.showSensors = function (jsonData) {
+                var address = (option["address"] == null) ? "" : option["address"];
+                if (address.length > 18) {
+                    address = address.slice(0, 18) + "...";
+                }
+                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">' + "���������&nbsp;" + date + "&nbsp;</p>";
+                for (var prop in jsonData) {
+                    if (jsonData.hasOwnProperty(prop) && prop != 'ver' && prop != 'methodName' && prop != 'mac' && prop != 'time') {
+                        for (var key in sensorsMap) {
+                            if (prop == key) {
+                                var sensorsDescription = sensorsMap[key];
+                            }
+                        }
+                        for (var key in sensorsUnitMap) {
+                            if (prop == key) {
+                                var sensorsUnit = sensorsUnitMap[key];
+                            }
+                        }
+                        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"]);
+                    //������������������������������,������������������������
+                    /*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) {
+            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.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){
+        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){
+            $.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']){
+                    if (!!window['external'] && window['external']['callWin']) {
                         window['external'].callWin(mpointStr);
-                    }else{
+                    } else {
                         alert(JSON.stringify(mpointStr));
                     }
                 }
             })
-		}else{
-            if(window["console"]!=undefined){
+        } 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);
-    	
-	}
+    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 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);
-				}
-			}
-		}
-	}
+    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;
+    window.moralMap = moralMap;
 })(jQuery, BMap, window);
\ No newline at end of file
diff --git a/src/main/webapp/view/map.jsp b/src/main/webapp/view/map.jsp
index 3869532..4d8dd8c 100644
--- a/src/main/webapp/view/map.jsp
+++ b/src/main/webapp/view/map.jsp
@@ -1,679 +1,764 @@
 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
-<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
+<%@ 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);
+    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" />
+    <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="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">
+        if (typeof (JSON) == 'undefined') {
+            $.getScript("js/json2.js");
+        }
+    </script>
     <script type="text/javascript" src="/js/moralmap.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;
-}
+    body,
+    html,
+    #mapCanvas {
+        width: 100%;
+        height: 100%;
+        overflow: hidden;
+        margin: 0;
+        z-index: 0;
+        font-size: 14px;
+        font-family: "������������";
+    }
 
-.listview{
-	overflow-x: hidden;
-	overflow-y: auto;
-	margin: 0;
-	padding: 0;
-	border: 0;
-	height: 390px;
-	width: 92%;
-	position: absolute; 
-}
+    .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 {
+        /*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 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;
-}
+    .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 {
-	padding: 10px 0;
-	border-bottom: 1px dotted #eee;
-	line-height: 40px;
-	height: 40px;
-	font-size: 20px;
-	/*cursor: pointer;*/
-}
+    .list {
+        padding: 10px 0;
+        clear: both;
+        zoom: 1
+    }
 
-.list span{
-	float: right;
-	position: relative;
-	right: 5px;
-	border-radius:4px;
-	width: 40px;
-	text-align: center;
-	height: 24px;
-	line-height: 24px;
-	font-size: 14px;
-	font-weight: bolder;
-	color:  white;
-	margin: 10px 0;
-	padding:2px 0;
-	margin-right: 8px;
-}
+    .list-chart-span {
+        cursor: pointer;
+        background-color: #4c9bf1
+    }
 
-.list .state00 {
-background-color: #00C600
-}
+    .list li {
+        padding: 10px 0;
+        border-bottom: 1px dotted #eee;
+        line-height: 40px;
+        height: 40px;
+        font-size: 20px;
+        /*cursor: pointer;*/
+    }
 
-.list .state01 {
-	background-color: #FF9;
-    color: #ff7f00;
-}
+    .list span {
+        float: right;
+        position: relative;
+        right: 5px;
+        border-radius: 4px;
+        width: 40px;
+        text-align: center;
+        height: 24px;
+        line-height: 24px;
+        font-size: 14px;
+        font-weight: bolder;
+        color: white;
+        margin: 10px 0;
+        padding: 2px 0;
+        margin-right: 8px;
+    }
 
-.list .state02 {
-	
-	background-color: #F93;
-}
+    .list .state00 {
+        background-color: #00C600
+    }
 
-.list .state03 {
-	background-color: #F00;
-}
+    .list .state01 {
+        background-color: #FF9;
+        color: #ff7f00;
+    }
 
-.list .state04 {
-	/*background-color: #eee;*/
-	/*color: #777 ;*/
-	background-color: #738d99 ;
-}
-			/*
-			  * ������������������---������������
-			  */
-			
-			.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%;
- }
+    .list .state02 {
+
+        background-color: #F93;
+    }
+
+    .list .state03 {
+        background-color: #F00;
+    }
+
+    .list .state04 {
+        /*background-color: #eee;*/
+        /*color: #777 ;*/
+        background-color: #738d99;
+    }
+
+    /*
+      * ������������������---������������
+      */
+
+    .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>
-		<input id="searchParam"/>
-		</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 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 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) {
+    //���������������
+    (function ($) {
+        var moralMap = window.moralMap;
+        var params = $.parseJSON($("#mapParams").html());
+        moralMap['params'] = params;
+        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;
 
-		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);
+        //���������������������click������������
+        function showEqus(obj) {
 
-	}
-   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();
+            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: 'showDeviceMonitor',
+                                name: _obj['name'],
+                                mac: (_obj['mac']).toLowerCase(),
+                                longitude: _obj['longitude'],
+                                latitude: _obj['latitude'],
+                                monitorPointId: _obj['monitorPointId'],
+                                version: _obj['deviceVersion']['version']
+                            }
+                            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']['showMonitorInfo']) {
+                                window['external'].showMonitorInfo(equStr);
+                            } else {
+                                alert(equStr);
+                            }
+                        }
+                        var moralMask = new moralMap.Equipment(obj);
+                        moralMap.addOverlay(moralMask);
                     }
-					obj['click'] = function(){
-                                       var _obj = this.getOption();
-                                       if(_obj['mac']==null){
-                                           alert("mac���������������������������������������");
-                                           return;
-                                       }
-					                	var equ = {
-									    methodName : 'showDeviceMonitor',
-										name: _obj['name'],
-										mac: (_obj['mac']).toLowerCase(),
-										longitude: _obj['longitude'],
-										latitude: _obj['latitude'],
-                                        monitorPointId: _obj['monitorPointId'],
-									    version:_obj['deviceVersion']['version']
-									}
-									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']['showMonitorInfo']){
-							        	window['external'].showMonitorInfo(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) {
+                }
+            }
+        }
+
+        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);
+            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();
-	});
+        });
+        //��������������������� ���������������,���������
+        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);
+        //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};
         }
-        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) {
-	     var endZoom = this.getZoom();
-	     if(endZoom>=moralMap.getZoomConfine()){//������������������������
-	     		loadOverlays("get-devices",addOverEquipments);
-	     }else{
-				loadOverlays("get-monitorpoints",addOverMpoints);
-	     }
-	     //moralMap.closePopupbox("#popup_box");
-	});
-	moralMap.addEventListener('moveend', function(type) {
-	     var endZoom = this.getZoom();
-	     if(endZoom>=moralMap.getZoomConfine()){//������������������������
-	     		loadOverlays("get-devices",addOverEquipments);
-	     }else{
-				loadOverlays("get-monitorpoints",addOverMpoints);
-	     }
-	     //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(){
+        /**
+         * ������������
+         */
+        // 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) {
+            var endZoom = this.getZoom();
+            if (endZoom >= moralMap.getZoomConfine()) {//������������������������
+                loadOverlays("get-devices", addOverEquipments);
+            } else {
+                loadOverlays("get-monitorpoints", addOverMpoints);
+            }
+            //moralMap.closePopupbox("#popup_box");
+        });
+        moralMap.addEventListener('moveend', function (type) {
+            var endZoom = this.getZoom();
+            if (endZoom >= moralMap.getZoomConfine()) {//������������������������
+                loadOverlays("get-devices", addOverEquipments);
+            } else {
+                loadOverlays("get-monitorpoints", addOverMpoints);
+            }
+            //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);
+        }, 5000);
     }
-    function stopRefreshPage(){
+
+    function stopRefreshPage() {
         window.clearInterval(_intervalNum);
-        _intervalNum=-1;
+        _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;
+
+    //������������
+    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)){
+        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",
+                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') {
+                success: function (data) {
+                    if (data != null && typeof data === 'object') {
                         var resultMap = data["extData"];
-                        if(resultMap==null){
+                        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){
+                        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){
+                                    if (mpoint != null) {
                                         mpoint.refreshState(marker["state"]);
                                     }
 //									mpoint.refreshState(4);
                                 }
-                            }else{
-                                for(var b_i in markers){
+                            } 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){
+                                    if (equipment != null) {
                                         equipment.refreshState(marker);
                                     }
                                 }
                             }
-                            
+
                             var equ = {
-									    methodName : 'refreshState',
-										markers : markers,
-										layer : layer	
-									}
+                                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 (window["console"] != undefined) {
+                            }
+                            if (!!window['external'] && !!window['external']['callWin']) {
+                                window['external'].callWin(equStr);
+                            }
                         }
-                        if(resultMap["popupEquStates"]!=null){
+                        if (resultMap["popupEquStates"] != null) {
                             listView.refreshState(resultMap["popupEquStates"]);
                         }
                     }
                 }
             });
-		}
-	}
-	
-	function callJS(jsonData){
-		var jsonData = JSON.parse(jsonData);
-		var methodName = jsonData.methodName;
-		if("JumpBaiduMap" == methodName){
-			moralMap.callJS(jsonData);
-		} else if ("RefreshState" == methodName) {
-			//$("#searchParam").val(JSON.stringify(jsonData));
-			var states = jsonData.states;
-			moralMap.refreshState(states);
-		}
-	}
+        }
+    }
+
+    function callJS(jsonData) {
+        // $("#searchParam").val(jsonData);
+        var jsonData = JSON.parse(jsonData);
+        var methodName = jsonData.methodName;
+        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