From e5604c3b306bcc645753211debc7084a09416970 Mon Sep 17 00:00:00 2001
From: hdw <496960745@qq.com>
Date: 星期五, 14 十二月 2018 15:09:14 +0800
Subject: [PATCH] 机房搜索定位功能

---
 gx_tieta/WebRoot/mobil/map.html               |  312 +++++++++++++++++++++++++++++++++++++++++++++++++++
 gx_tieta/WebRoot/mobil/iframe/searchHome.html |    6 
 2 files changed, 312 insertions(+), 6 deletions(-)

diff --git a/gx_tieta/WebRoot/mobil/iframe/searchHome.html b/gx_tieta/WebRoot/mobil/iframe/searchHome.html
index 52ed5a8..320ce79 100644
--- a/gx_tieta/WebRoot/mobil/iframe/searchHome.html
+++ b/gx_tieta/WebRoot/mobil/iframe/searchHome.html
@@ -74,10 +74,14 @@
             });
             
             // 鐐瑰嚮鏌ヨ鑾峰彇homeInfo鐨勫��
+            var homeLocation = parent.$('#homeLocation');
             $('#searchBtn').on('click', function() {
                 var homeInfo = $('#searchInput').data('homeInfo');
                 if(homeInfo) {
-                    console.log(homeInfo);
+                    // console.log(homeInfo);
+                    homeLocation.data('homeInfo', homeInfo);
+                    homeLocation.click();
+                    parent.layer.close(index);
                 }else {
                     layer.msg('璇烽�夋嫨涓嬫柟鐨勬満鎴�');
                 }
diff --git a/gx_tieta/WebRoot/mobil/map.html b/gx_tieta/WebRoot/mobil/map.html
index 1c3fb5e..3cf3bab 100644
--- a/gx_tieta/WebRoot/mobil/map.html
+++ b/gx_tieta/WebRoot/mobil/map.html
@@ -39,7 +39,29 @@
 			/* 瀹氫箟浣嶇疆 */
 			margin-left: 200px;
 		}
-		.map-panel-btn:hover {
+		
+		.map-panel-seen-btn {
+			font-size: 12px;
+			text-decoration: none!important;
+			font-family: Helvetica, Arial, sans serif;
+			padding: 4px 12px;
+			border-radius: 3px;
+			-moz-border-radius: 3px;
+			box-shadow: inset 0px 0px 2px #fff;
+			-o-box-shadow: inset 0px 0px 2px #fff;
+			-webkit-box-shadow: inset 0px 0px 2px #fff;
+			-moz-box-shadow: inset 0px 0px 2px #fff;
+			/*瀹氫箟棰滆壊鍜屾牱寮�*/
+			color: #41788c;
+			border: 1px solid #6fb1c7;
+			background-image: -moz-linear-gradient(#aae5f7, #73d0f1);
+			background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#73d0f1), to(#aae5f7));
+			background-image: -webkit-linear-gradient(#aae5f7, #73d0f1);
+			background-image: -o-linear-gradient(#aae5f7, #73d0f1);
+			text-shadow: 1px 1px 1px #bfeafb;
+			background-color: #73d0f1;
+		}
+		.map-panel-btn:hover, .map-panel-seen-btn:hover {
 			border: 1px solid #4690ad;
 			background-image: -moz-linear-gradient(#73d0f1, #aae5f7);
 			background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#aae5f7), to(#73d0f1));
@@ -85,10 +107,13 @@
     </div>
     <!-- 瀛樺偍鏈烘埧淇℃伅鍒楄〃 -->
     <div id="searchHomeIframe"></div>
+    <!-- 鏈烘埧瀹氫綅 -->
+    <div id="homeLocation"></div>
     <!-- 瀛樺湪鏈烘埧淇℃伅 -->
     <div id="homeInfoIframe"></div>
     <script src="js/jquery-1.8.3.js"></script>
     <script src="src/layui.all.js"></script>
+    <script src="../pages/js/GPS.js"></script>
     <script>
         //  鐧惧害鍦板浘妯″潡
         var map = new BMap.Map('map');
@@ -116,7 +141,7 @@
 		       		mk.enableDragging();		// 璁剧疆鍙嫋鍔�
 		       		map.addOverlay(mk);			// 灏嗚鐩栫墿娣诲姞鍒板湴鍥句腑
 		       		mk.setLabel(label);			// 缁欒鐩栫墿娣诲姞label鎻愮ず
-					map.panTo(r.point, 20);		// 灏嗗湴鍥剧Щ鍔ㄥ埌娣诲姞鐨勭偣浣嶇疆
+					map.panTo(r.point);		// 灏嗗湴鍥剧Щ鍔ㄥ埌娣诲姞鐨勭偣浣嶇疆
 					map.setZoom(20);			// 璁剧疆鍦板浘鐨勭缉鏀剧瓑绾�
 					
 					// 缁檓aker鐐圭粦瀹氱偣鍑讳簨浠�
@@ -135,10 +160,13 @@
 			var allOverlay = map.getOverlays();
 			for (var i = 0; i < allOverlay.length -1; i++){
 				if(allOverlay[i].getLabel) {
-					if(allOverlay[i].getLabel().content == str){
-						map.removeOverlay(allOverlay[i]);
-						return false;
+					if(allOverlay[i].getLabel()) {
+						if(allOverlay[i].getLabel().content == str){
+							map.removeOverlay(allOverlay[i]);
+							return false;
+						}
 					}
+					
 				}
 				
 			}
@@ -301,6 +329,280 @@
 			
 		}
 		
+		// 鏄剧ず鍦板浘鍥炬爣
+		var allStation = [];
+		searchStation();
+		function searchStation(){
+			var temp = createSearchParam();
+			var json = JSON.stringify(temp);
+			var load = layer.load(1);
+			// 鏌ヨ鍚庡彴
+			$.ajax({ 	
+		        type: "post", 				
+		        url: "BattMap_informationAction!searchUserManageStation",				
+		        async: true,				
+		        dataType:'text',
+		        data:"json="+json,		
+		        success: function(data){
+		        	data = eval('('+data+')');
+		        	// 鑾峰彇缁撴灉闆�
+					var rs = JSON.parse(data.result);
+					var list = rs.data;
+					// console.log(list);
+					allStation = new Array();
+					if(list!=undefined && list.length>0){
+						// 閬嶅巻鏌ヨ缁撴灉
+						for(var i=0;i<list.length;i++){
+							var _list = list[i];
+							allStation.push(formatAllStation(_list));
+						}
+						
+						createMapDot(map, allStation);
+						queryInRect(map);
+						map.addEventListener("moveend", queryInRect.bind({},map));  // 鎷栧姩
+						map.addEventListener("zoomend", queryInRect.bind({},map)); // 缂╂斁
+					}
+		        },
+		        complete:function() {
+		        	layer.close(load);
+		        }
+		    });
+		}
+		
+		//鏋勯�犳煡璇㈡潯浠�
+		function createSearchParam(){
+			var bmd = {
+				adata:{
+					alm_cleared_type:$('#alarm-station').length == 0?0:$('#alarm-station').is(":checked")?0:100,
+					alm_id:$('#low-station').length==0?1:$('#low-station').is(":checked")?1:100,
+				},
+				bplan:{
+					discharge_reason:$('#delayed-station').length==0?3:$('#delayed-station').is(":checked")?3:100,
+				}
+			};
+			
+			return bmd;
+		}
+		
+		// 鏍煎紡鍖栨煡璇㈢粨鏋�
+		function formatAllStation(list) {
+			var obj = new Object();
+			// GPS鍧愭爣杞寲涓虹櫨搴﹀潗鏍�
+			var point = GPS.wgs2bd(list.latitude, list.longitude);
+			// 鏋勯�犵粨鏋滈泦
+			obj.lng = point.lon;
+			obj.lat = point.lat;
+			obj.title = list.StationName;
+			obj.sId = list.StationId;
+			obj.fbsId = list.FBSDeviceId;
+			obj.addr = list.Address;
+			obj.msg = "";
+			obj.num = list.num;
+			return obj;
+		}
+		
+		// 鐢熸垚鍦板浘鍥炬爣
+		function createMapDot(map, dotList) {
+			// 閬嶅巻鏌ヨ鍐呭鐢熸垚瀵瑰簲鐨勫浘鏍�
+			for(var i = 0; i<dotList.length; i++) {
+				var pt = new BMap.Point(dotList[i].lng, dotList[i].lat);
+				var mk = new BMap.Marker(pt);	// 瀹氫箟marker鐐�
+				// 鍚憁k鐐规坊鍔爈abel
+				var home_name = new BMap.Label(dotList[i].title, {offset:new BMap.Size(20,-10)});
+				home_name.setStyle({display: 'none', padding: '4px 2px'});	// 璁剧疆涓嶅彲瑙�
+				mk.setLabel(home_name);		// 璁剧疆label
+				
+				mk.addEventListener('click', function(e) {
+					var target = e.target;
+					//showMapPanel(target, dotList);
+					searchPanelInfo(target.point);
+				});
+				
+				
+				map.addOverlay(mk);			// 娣诲姞瑕嗙洊鐗�
+				mk.hide();
+			}
+		}
+		
+		// 鏌ヨ鏈烘埧闈㈡澘淇℃伅
+		function searchPanelInfo(param) {
+			var point = new BMap.Point(param.lng, param.lat);
+			var stationInfo = getStaionByPoint(point);
+			if(!stationInfo) {
+				alert('闈㈡澘淇℃伅鏌ヨ澶辫触锛�');
+				return;
+			}
+			var temp = {
+				StationId: stationInfo.sId
+			};
+			// 鏌ヨ闈㈡澘淇℃伅
+			$.ajax({
+				type: 'post',
+				async: true,
+				url: 'BattMap_informationAction!searchUserManageStation3',
+				data: 'json='+JSON.stringify(temp),
+				dataType: 'json',
+				success: function(result) {
+					var rs = JSON.parse(result.result);
+					if(rs.length != 0) {
+						var data = rs[0];
+						// console.info(data);
+						var content = '<div style="padding:6px 0; width:50%; float:left;"><span>钃勭數姹犵粍鍛婅鏁扮洰锛�</span>'+data.code+'</div>'+
+								'<div style="padding:6px 0; width:50%; float:left;"><span>钃勭數姹犵粍钀藉悗鏁扮洰锛�</span>'+data.sum+'</div>'+
+								'<div style="clear:both"></div>'+
+								'<div style="padding: 6px 4px">缁忓害锛�<span class="lng">'+data.data.longitude+'</span>锛岀含搴︼細<span class="lat">'+data.data.latitude+'</span></div>'+
+								'<div style="padding:6px;"><span>鍦板潃锛�</span>'+data.data.Address+'</div>'+
+								'<br>'+
+								'<div class="t-align-right">'+
+									'<a href="javascript:;" class="map-panel-seen-btn mrl8">鏌ョ湅</a>'+
+									'<a href="javascript:;" class="map-panel-seen-btn mrl8">淇敼</a>'+
+									'<a href="javascript:;" class="map-panel-seen-btn mrl8">鍒犻櫎</a>'+
+								'</div>'+
+								'<input type="hidden" class="ipt-hide home" value="'+data.data.StationName+'">'+
+								'<input type="hidden" class="ipt-hide province" value="'+data.data.stationName1+'">'+
+								'<input type="hidden" class="ipt-hide county" value="'+data.data.stationName5+'">'+							
+								'<input type="hidden" class="ipt-hide sid" value="'+data.data.StationId+'">'+
+								'<input type="hidden" class="ipt-hide city" value="'+data.data.stationName2+'">';
+						
+						var list = {
+							title: data.data.StationName,
+							content: content
+						};
+						
+						showMapPanelByPoint(point, list);
+					}
+					
+				}
+			});	
+		}
+		
+		// 鏄剧ず鍦板浘鎻愮ず闈㈡澘
+		function showMapPanelByPoint(point, dataList) {
+			var searchInforWin = null;
+			var opts = {
+				title  : dataList.title+'<a href="javascript:loadToHomeInfo();" style="margin-left: 1em;text-decoration:none;cursor:not-allowed">璇︽儏>></a>',      //鏍囬鏈紑鍚�
+				width  : '290',             //瀹藉害
+				height : 150,              //楂樺害
+				panel  : "panel",         //妫�绱㈢粨鏋滈潰鏉�
+				enableAutoPan : true,     //鑷姩骞崇Щ
+				enableSendToPhone:false,
+				searchTypes   :[
+					// BMAPLIB_TAB_SEARCH,   //鍛ㄨ竟妫�绱�
+					// BMAPLIB_TAB_TO_HERE,  //鍒拌繖閲屽幓
+					// BMAPLIB_TAB_FROM_HERE //浠庤繖閲屽嚭鍙�
+				]
+			};
+	
+			searchInforWin = new BMapLib.SearchInfoWindow(map, dataList.content, opts);
+			searchInforWin.open(point);
+		}
+		
+		// 鏍规嵁缁忕含搴﹁幏鍙栨満鎴跨殑淇℃伅
+		function getStaionByPoint(point) {
+			var stationInfo = false;
+			// 閬嶅巻鎵�鏈夋満鎴�
+			for(var i=0; i<allStation.length; i++) {
+				var info = allStation[i];
+				if(info.lng == point.lng && info.lat == point.lat) {
+					stationInfo = info;
+				}
+			}
+			return stationInfo;
+		}
+		
+		// 鏄剧ず鍖哄煙鍐呯殑鍥炬爣
+		function queryInRect(map) {
+			var cp = map.getBounds(); // 杩斿洖map鍙鍖哄煙锛屼互鍦扮悊鍧愭爣琛ㄧず  
+	        var sw = cp.getSouthWest(); // 杩斿洖鐭╁舰鍖哄煙鐨勮タ鍗楄  
+	        var ne = cp.getNorthEast(); // 杩斿洖鐭╁舰鍖哄煙鐨勪笢鍖楄
+	        var mkList = map.getOverlays();  
+	        var zoom = map.getZoom(); //褰撳墠缂╂斁绾у埆 
+	        showDotList(mkList, sw, ne, zoom);
+		}
+		
+		// 鑾峰彇dots鐨勯泦鍚�
+		function showDotList(mkList, sw, ne, zoom) {
+			var rs = [];
+				swlng=sw.lng,  
+	            swlat=sw.lat,  
+	            nelng=ne.lng,  
+	            nelat=ne.lat;
+	            
+	            var maxLng = sw.lng>ne.lng?sw.lng:ne.lng;
+	            var minLng = sw.lng<ne.lng?sw.lng:ne.lng;
+	            
+	            var maxLat = sw.lat>ne.lat?sw.lat:ne.lat;
+	            var minLat = sw.lat<ne.lat?sw.lat:ne.lat;
+	            for(var i=0; i<mkList.length; i++) {
+	            	var mk = mkList[i];
+	            	var point = mk.getPosition?mk.getPosition():null;
+	            	if(point) {
+	            		var lat = point.lat;
+	            		var lng = point.lng;
+	            		// 鍒ゆ柇褰撳墠鐨刴aker鐐规槸鍚︽樉绀�
+	            		if(lng<maxLng && lng>minLng && lat<maxLat && lat>minLat && zoom>10) {
+	            			// console.log(123)
+	            			mk.show();
+	            		}else {
+	            			mk.hide();
+	            		}
+	            		
+	            	}
+	            }
+	            return rs;
+		}
+		
+		// 鏍规嵁鍚庡彴鏁版嵁鏄剧ず鍦板浘鐨勪腑蹇冨潗鏍�
+		centerMapByPoint(map);
+		function centerMapByPoint(map) {
+			// 璇锋眰鍚庡彴鏍规嵁鏁版嵁鏇存敼鍦板浘涓績鍧愭爣
+			$.ajax({ 	
+		        type: "post", 				
+		        url: "Positiomap_usrAction!serchByCondition",				
+		        async:true,				
+		        dataType:'text',
+		        data:null,		
+		        success: function(rs){
+		        	rs = eval('('+rs+')');
+		        	var model =  eval('('+rs.result+')');
+		        	if(model.code == 1) {
+		        		var data = model.data[0];
+		        		var _point = new BMap.Point(data.map_longitude,data.map_latitude);
+		        		map.centerAndZoom(_point, data.map_level);	// 鐢ㄥ煄甯傚悕璁剧疆鍦板浘涓績鐐�
+		        	}
+		       	}			
+			});
+		}
+		
+		
+		// 鏈烘埧瀹氫綅闈㈡澘
+		$('#homeLocation').on('click', function() {
+			var homeInfo = $(this).data('homeInfo');
+			locationByHomeName(map, homeInfo.home);
+		});
+		
+		
+		// 鏍规嵁鏈烘埧鍚嶇О瀹氫綅鏈烘埧
+		function locationByHomeName(map, name) {
+			var mkList = map.getOverlays();
+			// console.log(mkList);
+			for(var i=0; i<mkList.length; i++) {
+				var mk = mkList[i];
+				if(mk.getLabel) {
+					console.log(mk.getLabel());
+				}
+				var _label = mk.getLabel?mk.getLabel()?mk.getLabel().content:'':'';
+				// 鍒ゆ柇鏈烘埧鍚嶇О
+				if(_label == name) {
+					var point = mk.getPosition();
+					map.panTo(point);		// 灏嗗湴鍥剧Щ鍔ㄥ埌娣诲姞鐨勭偣浣嶇疆
+					map.setZoom(20);			// 璁剧疆鍦板浘鐨勭缉鏀剧瓑绾�
+					searchPanelInfo(point);
+				}
+				
+			}
+		}
+		
         //鎷︽埅瀹夊崜鍥為��鎸夐挳
         history.pushState(null, null, location.href);
         window.addEventListener('popstate', function(event) {

--
Gitblit v1.9.1