Commit 6c18bb5df90068d665862ee055a7c966d4de5a30

Authored by yiming
1 parent 829f99f1

bf

bsthLineProfiles/src/main/resources/static/img/station_icon.png 0 → 100644

296 Bytes

bsthLineProfiles/src/main/resources/templates/system/line/map.html
@@ -34,15 +34,38 @@ body, html, #container { @@ -34,15 +34,38 @@ body, html, #container {
34 top: 100px; 34 top: 100px;
35 display: none; 35 display: none;
36 } 36 }
  37 +
  38 +.tangram-suggestion-main {
  39 + z-index: 999999;
  40 +}
  41 +.subContainer {
  42 + position: relative;
  43 + padding-bottom: 10px;
  44 +}
  45 +.opt {
  46 + position: relative;
  47 + padding-top: 10px;
  48 +}
  49 +.optTitle {
  50 + width: 60px;
  51 + height: 28px;
  52 + line-height: 28px;
  53 + font-size: 14px;
  54 + text-align: center;
  55 + background: #c5464a;
  56 + color: #fff;
  57 + border-radius: 5px 0 0 5px;
  58 +}
37 </style> 59 </style>
38 <script 60 <script
39 src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=IGGrr4UjwIYzatoCRFKEL8sT"></script> 61 src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=IGGrr4UjwIYzatoCRFKEL8sT"></script>
40 </head> 62 </head>
41 <body> 63 <body>
42 - <div class="info"> 64 + <div class="info" style="width: 350px">
43 <ul class="nav nav-tabs" role="tablist"> 65 <ul class="nav nav-tabs" role="tablist">
44 - <li role="presentation" class="active"><a onclick="show('road','station')" role="tab" data-toggle="tab">站点查询</a></li>  
45 - <li role="presentation"><a onclick="show('station','road')" role="tab" data-toggle="tab">道路查询</a></li> 66 + <li role="presentation" class="active"><a onclick="show('station','road','line')" role="tab" data-toggle="tab">站点查询</a></li>
  67 + <li role="presentation"><a onclick="show('road','station','line')" role="tab" data-toggle="tab">道路查询</a></li>
  68 + <li role="presentation"><a onclick="show('line','road','station')" role="tab" data-toggle="tab">途径线路</a></li>
46 </ul> 69 </ul>
47 70
48 <form id="station"> 71 <form id="station">
@@ -50,9 +73,8 @@ body, html, #container { @@ -50,9 +73,8 @@ body, html, #container {
50 <h4></h4> 73 <h4></h4>
51 <label class="col-sm-3"><h4 style="text-align:right">站点</h4></label> 74 <label class="col-sm-3"><h4 style="text-align:right">站点</h4></label>
52 <div class="col-sm-9" > 75 <div class="col-sm-9" >
53 - <select id='stations' >  
54 - <option value=""></option>  
55 - </select> 76 + <input type="text" class="form-control" id="stations">
  77 + <div id="searchResultPanel" style="border:1px solid #C0C0C0;width:150px;height:auto; display:none;"></div>
56 </div> 78 </div>
57 <h4></h4> 79 <h4></h4>
58 </div> 80 </div>
@@ -75,42 +97,47 @@ body, html, #container { @@ -75,42 +97,47 @@ body, html, #container {
75 </div> 97 </div>
76 </form> 98 </form>
77 99
78 - <form id="road" style="display:none;"> 100 + <form id="road" style="display: none">
79 <div class="row"> 101 <div class="row">
80 <h4></h4> 102 <h4></h4>
81 <label class="col-sm-3"><h4 style="text-align:right">路名</h4></label> 103 <label class="col-sm-3"><h4 style="text-align:right">路名</h4></label>
82 <div class="col-sm-9"> 104 <div class="col-sm-9">
83 - <input id="roadName" class="form-control" type="text"> 105 + <input id="searchRoad" class="form-control" type="text">
84 </div> 106 </div>
85 <h4></h4> 107 <h4></h4>
86 </div> 108 </div>
87 <div class="row"> 109 <div class="row">
88 <h4></h4> 110 <h4></h4>
89 <div class="col-sm-4"> 111 <div class="col-sm-4">
90 - <button type="button" class="el-button el-button--primary el-button--mini" onclick="searchRoad();"><!----><i class="el-icon-search"></i><span>搜索</span></button> 112 + <button type="button" class="el-button el-button--primary el-button--mini" onclick="addLine();"><!----><i class="el-icon-search"></i><span>搜索</span></button>
91 </div> 113 </div>
92 <div class="col-sm-4"> 114 <div class="col-sm-4">
93 <button type="button" class="el-button el-button--default el-button--mini" onclick="reset();"><!----><i class="el-icon-refresh"></i><span>清除站点结果</span></button> 115 <button type="button" class="el-button el-button--default el-button--mini" onclick="reset();"><!----><i class="el-icon-refresh"></i><span>清除站点结果</span></button>
94 </div> 116 </div>
95 </div> 117 </div>
96 </form> 118 </form>
  119 + <form id="line" style="display: none">
  120 + <div class="row">
  121 + <h4></h4>
  122 + <div id="bus" style="padding-left: 5px;">
  123 + </div>
  124 + <h4></h4>
  125 + <div style="padding-left: 5px;">
  126 + <i class="fa fa-minus " style="color:#5298ff" id="c1"></i>
  127 + <i class="fa fa-minus " style="color:#E0312A" id="c2"></i>
  128 + <i class="fa fa-minus " style="color:#30e868" id="c3"></i>
  129 + <i class="fa fa-minus " style="color:#A80FE4" id="c4"></i>
  130 + <i class="fa fa-minus " style="color:#0010eb" id="c5"></i>
  131 + </div>
  132 + <h4></h4>
  133 + <div class="col-sm-4">
  134 + <button type="button" class="el-button el-button--default el-button--mini" onclick="location.reload();"><!----><i class="el-icon-refresh"></i><span>清除线路</span></button>
  135 + </div>
  136 + </div>
  137 + </form>
97 </div> 138 </div>
98 139
99 140
100 - <!-- <div class="info col-lg-6">  
101 - <div class="input-group">  
102 - <input type="text" class="form-control" id="text">  
103 - <div class="input-group-btn">  
104 - <button type="button" class="btn btn-white dropdown-toggle"  
105 - data-toggle="dropdown">  
106 - <span class="caret"></span>  
107 - </button>  
108 - <ul class="dropdown-menu dropdown-menu-right" role="menu">  
109 - </ul>  
110 - </div>  
111 - </div>  
112 - </div> -->  
113 -  
114 <div class="info stationInfo"> 141 <div class="info stationInfo">
115 <div id="stationInfo"></div> 142 <div id="stationInfo"></div>
116 </div> 143 </div>
@@ -124,41 +151,20 @@ body, html, #container { @@ -124,41 +151,20 @@ body, html, #container {
124 map.centerAndZoom(new BMapGL.Point(121.528733, 31.237425), 12); // 初始化地图,设置中心点坐标和地图级别 151 map.centerAndZoom(new BMapGL.Point(121.528733, 31.237425), 12); // 初始化地图,设置中心点坐标和地图级别
125 map.enableScrollWheelZoom(true); // 开启鼠标滚轮缩放 152 map.enableScrollWheelZoom(true); // 开启鼠标滚轮缩放
126 153
  154 +
  155 +
127 map.addEventListener('click', function(e) { 156 map.addEventListener('click', function(e) {
128 if (e.overlay) { 157 if (e.overlay) {
129 return; // 存在覆盖物退出 158 return; // 存在覆盖物退出
130 } 159 }
131 -  
132 -  
133 }); 160 });
134 161
135 var stations 162 var stations
136 - $.ajax({  
137 - // get请求地址  
138 - url: "../line/getStations",  
139 - dataType: "json",  
140 - type:'POST',  
141 - success: function (data) {  
142 - stations=data.stations;  
143 - var arr = new Array();  
144 - for (var i = 0; i < stations.length; i++) {  
145 - var station=new Object();  
146 - station.id=stations[i];  
147 - station.text=stations[i];  
148 - station.value=stations[i];  
149 - arr.push(station);  
150 - }  
151 - $("#stations").select2({  
152 - data: arr,  
153 - placeholder:'请选择',  
154 - allowClear:true  
155 - })  
156 163
157 - }  
158 - });  
159 function searchStation(){ 164 function searchStation(){
160 - var station=$('#stations').select2('val'); 165 + var station=$('#stations').val();
161 var distance=$("#distance").val() 166 var distance=$("#distance").val()
  167 +
162 //创建地址解析器实例 168 //创建地址解析器实例
163 var myGeo = new BMapGL.Geocoder(); 169 var myGeo = new BMapGL.Geocoder();
164 // 将地址解析结果显示在地图上,并调整地图视野 170 // 将地址解析结果显示在地图上,并调整地图视野
@@ -166,19 +172,7 @@ body, html, #container { @@ -166,19 +172,7 @@ body, html, #container {
166 map.clearOverlays(); 172 map.clearOverlays();
167 map.centerAndZoom(point, 18); 173 map.centerAndZoom(point, 18);
168 a(point.lng,point.lat,distance) 174 a(point.lng,point.lat,distance)
169 - /*if(point){  
170 - map.centerAndZoom(point, 16);  
171 - map.addOverlay(new BMapGL.Marker(point, {title: station}))  
172 - }else{  
173 - alert('您选择的地址没有解析到结果!');  
174 - }*/  
175 }, '上海市') 175 }, '上海市')
176 - /* var station=$('#stations').select2('val');  
177 - console.log(station);  
178 - var local = new BMapGL.LocalSearch(map, {  
179 - renderOptions:{map: map}  
180 - });  
181 - local.search(station);*/  
182 } 176 }
183 function searchRoad(){ 177 function searchRoad(){
184 var roadName=$('#roadName').val(); 178 var roadName=$('#roadName').val();
@@ -190,26 +184,19 @@ body, html, #container { @@ -190,26 +184,19 @@ body, html, #container {
190 map.clearOverlays(); 184 map.clearOverlays();
191 map.centerAndZoom(point, 18); 185 map.centerAndZoom(point, 18);
192 b(point.lng,point.lat,distance,roadName) 186 b(point.lng,point.lat,distance,roadName)
193 - /*if(point){  
194 - map.centerAndZoom(point, 16);  
195 - map.addOverlay(new BMapGL.Marker(point, {title: station}))  
196 - }else{  
197 - alert('您选择的地址没有解析到结果!');  
198 - }*/  
199 }, '上海市') 187 }, '上海市')
200 } 188 }
  189 +
201 function a(lng,lat,distance){ 190 function a(lng,lat,distance){
202 $.get("http://180.167.126.126:18991/prod-api/service/interfact/getStation?lng=" 191 $.get("http://180.167.126.126:18991/prod-api/service/interfact/getStation?lng="
203 +lng + "&lat=" + lat + "&dis=" 192 +lng + "&lat=" + lat + "&dis="
204 + distance / 1000, function(data) { 193 + distance / 1000, function(data) {
205 if (data.code == "200") { 194 if (data.code == "200") {
  195 + var bus=new Array();
206 for ( var i in data.data) { 196 for ( var i in data.data) {
207 (function(){ 197 (function(){
208 var station = data.data[i]; 198 var station = data.data[i];
209 var marker = new BMapGL.Marker(new BMapGL.Point(station.lonBd, station.latBd),{title:station.standardStationCode}); 199 var marker = new BMapGL.Marker(new BMapGL.Point(station.lonBd, station.latBd),{title:station.standardStationCode});
210 - /* var label = new BMapGL.Label(station.stationName);  
211 -  
212 - marker.setLabel(label);*/  
213 200
214 marker.station = data.data[i]; 201 marker.station = data.data[i];
215 202
@@ -220,6 +207,7 @@ body, html, #container { @@ -220,6 +207,7 @@ body, html, #container {
220 }; 207 };
221 var lineList=data.data[i].lineList; 208 var lineList=data.data[i].lineList;
222 var arr=lineList.split("、") 209 var arr=lineList.split("、")
  210 + Array.prototype.push.apply(bus, arr);
223 var str=''; 211 var str='';
224 for ( var j in arr) { 212 for ( var j in arr) {
225 str+="<a onClick='searchBus(\""+arr[j]+"\")'>"+arr[j]+"</a>、"; 213 str+="<a onClick='searchBus(\""+arr[j]+"\")'>"+arr[j]+"</a>、";
@@ -237,14 +225,27 @@ body, html, #container { @@ -237,14 +225,27 @@ body, html, #container {
237 + "</span><br/>"; 225 + "</span><br/>";
238 226
239 var infoWindow = new BMapGL.InfoWindow(info, opts); 227 var infoWindow = new BMapGL.InfoWindow(info, opts);
240 -  
241 -  
242 marker.addEventListener('click', function() { 228 marker.addEventListener('click', function() {
243 map.openInfoWindow(infoWindow, new BMapGL.Point(station.lonBd, station.latBd)); // 开启信息窗口 229 map.openInfoWindow(infoWindow, new BMapGL.Point(station.lonBd, station.latBd)); // 开启信息窗口
244 }); 230 });
245 map.addOverlay(marker); 231 map.addOverlay(marker);
246 })(); 232 })();
247 } 233 }
  234 + bus=Array.from(new Set(bus));
  235 + var str='';
  236 + for ( var j in bus) {
  237 + str+="<a onClick='searchBus(\""+bus[j]+"\")'>"+bus[j]+"</a>、";
  238 + }
  239 + document.getElementById('bus').innerHTML=str;
  240 +
  241 +
  242 + // 绘制圆
  243 + var circle = new BMapGL.Circle(new BMapGL.Point(lng,lat), distance/2, {
  244 + strokeColor: 'blue',
  245 + strokeWeight: 2,
  246 + strokeOpacity: 0.5
  247 + });
  248 + map.addOverlay(circle);
248 } 249 }
249 }); 250 });
250 } 251 }
@@ -258,9 +259,6 @@ body, html, #container { @@ -258,9 +259,6 @@ body, html, #container {
258 (function(){ 259 (function(){
259 var station = data.data[i]; 260 var station = data.data[i];
260 var marker = new BMapGL.Marker(new BMapGL.Point(station.lonBd, station.latBd),{title:station.standardStationCode}); 261 var marker = new BMapGL.Marker(new BMapGL.Point(station.lonBd, station.latBd),{title:station.standardStationCode});
261 - /* var label = new BMapGL.Label(station.stationName);  
262 -  
263 - marker.setLabel(label);*/  
264 262
265 marker.station = data.data[i]; 263 marker.station = data.data[i];
266 264
@@ -306,7 +304,6 @@ body, html, #container { @@ -306,7 +304,6 @@ body, html, #container {
306 } 304 }
307 305
308 function searchBus(busName){ 306 function searchBus(busName){
309 - console.log(busName)  
310 var busline = new BMapGL.BusLineSearch(map,{ 307 var busline = new BMapGL.BusLineSearch(map,{
311 renderOptions:{map:map,panel:"r-result"}, 308 renderOptions:{map:map,panel:"r-result"},
312 onGetBusListComplete: function(result){ 309 onGetBusListComplete: function(result){
@@ -318,78 +315,107 @@ body, html, #container { @@ -318,78 +315,107 @@ body, html, #container {
318 }); 315 });
319 busline.getBusList(busName); 316 busline.getBusList(busName);
320 } 317 }
321 - /* $("#text").bsSuggest({  
322 - url : "/system/line/getListForMap",  
323 - effectiveFields : [ "lineName" ],  
324 - searchFields : [ "lineName", "halfwayStation" ],  
325 - effectiveFieldsAlias : {  
326 - lineName : "线路名"  
327 - },  
328 - clearable : true,  
329 - idField : "id",  
330 - keyField : "lineName",  
331 - processData : function(json) { // url 获取数据时,对数据的处理,作为 getData 的回调函数  
332 - var data = {  
333 - 'value' : []  
334 - };  
335 -  
336 - for ( var i in json) {  
337 - data.value.push(json[i]);  
338 - }  
339 318
340 - //字符串转化为 js 对象  
341 - return data;  
342 - }  
343 - }).on('onDataRequestSuccess', function(e, result) {  
344 - console.log('onDataRequestSuccess: ', result);  
345 - }).on('onSetSelectValue', function(e, selectedData, selectedRawData) {  
346 -  
347 - busline.getBusList(e.target.value);  
348 -  
349 - }).on('onUnsetSelectValue', function() {  
350 - console.log('onUnsetSelectValue');  
351 - }).on('onShowDropdown', function(e, data) {  
352 - console.log('onShowDropdown', e.target.value, data);  
353 - }).on('onHideDropdown', function(e, data) {  
354 - console.log('onHideDropdown', e.target.value, data); 319 + // 百度地图API功能
  320 + function G(id) {
  321 + return document.getElementById(id);
  322 + }
  323 + var ac = new BMapGL.Autocomplete( //建立一个自动完成的对象
  324 + {"input" : "stations"
  325 + ,"location" : map
  326 + });
  327 + ac.addEventListener("onhighlight", function(e) { //鼠标放在下拉列表上的事件
  328 + var str = "";
  329 + var _value = e.fromitem.value;
  330 + var value = "";
  331 + if (e.fromitem.index > -1) {
  332 + value = _value.province + _value.city + _value.district + _value.street + _value.business;
  333 + }
  334 + str = "FromItem<br />index = " + e.fromitem.index + "<br />value = " + value;
  335 +
  336 + value = "";
  337 + if (e.toitem.index > -1) {
  338 + _value = e.toitem.value;
  339 + value = _value.province + _value.city + _value.district + _value.street + _value.business;
  340 + }
  341 + str += "<br />ToItem<br />index = " + e.toitem.index + "<br />value = " + value;
  342 + G("stations").innerHTML = str;
  343 + });
  344 +
  345 + var myValue;
  346 + ac.addEventListener("onconfirm", function(e) { //鼠标点击下拉列表后的事件
  347 + var _value = e.item.value;
  348 + myValue = _value.province + _value.city + _value.district + _value.street + _value.business;
  349 + G("stations").innerHTML ="onconfirm<br />index = " + e.item.index + "<br />myValue = " + myValue;
  350 +
  351 + setPlace();
  352 + });
  353 +
  354 + function setPlace(){
  355 + map.clearOverlays(); //清除地图上所有覆盖物
  356 + function myFun(){
  357 + var pp = local.getResults().getPoi(0).point; //获取第一个智能搜索的结果
  358 + map.centerAndZoom(pp, 18);
  359 + map.addOverlay(new BMapGL.Marker(pp)); //添加标注
  360 + }
  361 + var local = new BMapGL.LocalSearch(map, { //智能搜索
  362 + onSearchComplete: myFun
355 }); 363 });
  364 + /*local.search(myValue);*/
  365 + }
356 366
  367 + function show(id1,id2,id3){
  368 + $('#'+id1).attr("style","display:show;");
  369 + $('#'+id2).attr("style","display:none;");
  370 + $('#'+id3).attr("style","display:none;");
  371 + }
357 372
358 - var busline = new BMapGL.BusLineSearch(map, {  
359 - renderOptions : {  
360 - map : map,  
361 - panel : "r-result"  
362 - },  
363 - onGetBusListComplete : function(result) {  
364 - if (result) {  
365 -  
366 - for(var i in result._listItems){  
367 - if(result._listItems[i].name.indexOf($("#text").val()) > -1){  
368 - var fstLine = result.getBusListItem(i);//获取第一个公交列表显示到map上  
369 - busline.getBusLine(fstLine);  
370 - return;  
371 - }  
372 - }  
373 -  
374 - }else{  
375 - return;  
376 - }  
377 - },  
378 - onMarkersSet:function(array){  
379 -  
380 - for(var i in array){  
381 -  
382 - const overlay = array[i];  
383 -  
384 -  
385 - }  
386 - 373 +
  374 + var ll=new Array();//存放折线
  375 + var sl=new Array();//存放站点
  376 + var colors=['#5298ff','#E0312A','#30e868','#A80FE4','#0010eb']
  377 + var bus = new BMapGL.BusLineSearch(map, {
  378 + renderOptions:{map:map,panel:"r-result"},
  379 + onGetBusListComplete: function onGetBusListComplete (result) {
  380 + let fstLine = result.getBusListItem(0);
  381 + bus.getBusLine(fstLine);
  382 + },onPolylinesSet: function onPolylinesSet(polyline){//添加公交线时候回调函数.参数:ply:Polyline 公交线路几何对象
  383 + //通过删除api自带的折线 然后改变颜色重新渲染
  384 + map.clearOverlays();
  385 + polyline.setStrokeColor(colors[ll.length]);
  386 + polyline.setStrokeWeight(4);
  387 + polyline.setStrokeOpacity(0.9);
  388 + ll.push(polyline);
  389 + for(let i in ll){
  390 + var polyline2=ll[i];
  391 + map.addOverlay(polyline2); //添加折线覆盖物
387 } 392 }
388 - }); */  
389 - function show(id1,id2){  
390 - $('#'+id1).attr("style","display:none;");  
391 - $('#'+id2).attr("style","display:show;"); 393 + },onMarkersSet : function onMarkersSet(array){//添加公交站点时候回调函数.参数:sts:Array 公交站坐标组成的Marker对象数组
  394 + Array.prototype.push.apply(sl, array);
  395 + for(var i in sl){
  396 + map.addOverlay(sl[i]);
  397 + }
  398 + }
  399 + });
  400 +
  401 + var readyAdd=new Array();
  402 + function searchBus(line){
  403 + this.color='E0312A';
  404 + if (readyAdd.length>=5) {
  405 + alert("最多5条线路");
  406 + return false
  407 + }
  408 + if ($.inArray(line, readyAdd) == -1) {
  409 + bus.getBusList(line);
  410 + readyAdd.push(line); //readyAdd为空数组,用于存储已添加的线路名
  411 + document.getElementById('c'+readyAdd.length).innerHTML=line;
  412 + } else {
  413 + alert("该路线已添加");
  414 + }
  415 +
392 } 416 }
  417 +
  418 +
393 </script> 419 </script>
394 420
395 421