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