carSchedulePlaceSet.jsp 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344
  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2. <%@include file="/context/mytags.jsp"%>
  3. <t:base type="jquery,easyui,tools,DatePicker"></t:base>
  4. <script src = "plug-in/tools/jquery.tips.js"></script>
  5. <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=Cq7aZVbka0L3UXDLgkKFoiFqnZAwPdS4"></script>
  6. <body style="overflow-y: hidden" scroll="no">
  7. <style type="text/css">
  8. body{font-size:13px;margin:0px}
  9. #container{width:auto;height:88%;}
  10. .label{margin-left:20px;font-weight:bold;font-size:14px}
  11. .lng-lat{
  12. margin: 0 0 30px 0px;
  13. }
  14. .lng-lat .item{
  15. margin: 10px;
  16. }
  17. .angle{
  18. display: inline-block;
  19. width: 0px;
  20. height: 0px;
  21. position: absolute;
  22. bottom:-60px;
  23. border: 14px solid;
  24. left: 15px;
  25. bottom: -25px;
  26. opacity: 0.8;
  27. border-color: #333333 transparent transparent transparent;
  28. }
  29. .datagrid-btable .datagrid-cell{text-overflow:ellipsis;white-space: nowrap;}
  30. </style>
  31. <div id="main_list" class="easyui-layout" fit="true">
  32. <div region="center" style="padding:0px;border:0px;">
  33. <input id="carid" name="carid" type="hidden" value='${schedule.carid}' }/>
  34. <input id="scheduleid" name="scheduleid" type="hidden" value='${schedule.id}' />
  35. <t:datagrid name="detailList" checkbox="false" pagination="false" fitColumns="fasle" title="作业计划明细" actionUrl="carScheduleDetailController.do?datagrid&scheduleid=${schedule.id}"
  36. autoLoadData="true" idField="id" nowrap="true" extendParams="rownumbers : false," sortName="seq" sortOrder="asc" fit="true" queryMode="group" onLoadSuccess="onloaded">
  37. <t:dgCol title="主键" field="id" hidden="true" queryMode="single" width="120"></t:dgCol>
  38. <t:dgCol title="序号" field="seq" queryMode="single" width="50"></t:dgCol>
  39. <t:dgCol title="位置描述" field="address" queryMode="single" width="120" sortable="false"></t:dgCol>
  40. <t:dgCol title="车辆" field="carid" hidden="true" queryMode="single" width="120"></t:dgCol>
  41. <t:dgCol title="计划id" field="scheduleid" hidden="true" queryMode="single" width="120"></t:dgCol>
  42. <t:dgCol title="经度" field="lng" hidden="true" queryMode="single" width="80"></t:dgCol>
  43. <t:dgCol title="纬度" field="lat" hidden="true" queryMode="single" width="80"></t:dgCol>
  44. <t:dgCol title="操作" field="opt"></t:dgCol>
  45. <t:dgDelOpt title="删除" url="carScheduleDetailController.do?doDel&id={id}" urlclass="ace_button" urlfont="fa-trash-o"/>
  46. <t:dgFunOpt funname="showPoint(lng,lat,address)" title=" 显示" urlclass="ace_button" urlfont="fa-map-marker"></t:dgFunOpt>
  47. <%-- <t:dgToolBar title="录入" icon="icon-add" operationCode="add" url="carScheduleDetailController.do?goAdd" funname="adddetail"></t:dgToolBar> --%>
  48. <t:dgToolBar title="修改" icon="icon-edit" operationCode="edit" url="carScheduleDetailController.do?goUpdate" funname="update"></t:dgToolBar>
  49. </t:datagrid>
  50. </div>
  51. </div>
  52. <div id="eastPanel" region="east" style="width: 1150px;" split="true" >
  53. <div id="userListpanel" class="easyui-panel" style="padding:0px;border:0px" fit="true" border="false">
  54. <div style="margin:10px">搜&ensp;&ensp;&ensp;&ensp;索: <input type="text" id="suggestId" size="30" value="百度" style="width:300px;" /></div>
  55. <div class="lng-lat">
  56. <div class="item">
  57. 当前经度:
  58. <input type="text" id="jing" type=""/>
  59. </div>
  60. <div class="item">
  61. 当前纬度:
  62. <input type="text" id="wei" />
  63. <span style="display:-moz-inline-box;display:inline-block;float: right;margin-right: 10px;" >
  64. &ensp;&ensp;&ensp;&ensp;路径点序号:
  65. <input type="text" id="seq" class="text" />
  66. <a href="#" class="easyui-linkbutton l-btn" iconcls="icon-add" style="margin-left: 50px;" onclick="addPoint()" id="">
  67. <span>添加到路径点</span>
  68. </a>
  69. <a href="#" class="easyui-linkbutton l-btn" iconcls="icon-view" onclick="showAllPoint()" id="upexport">
  70. <span>显示全部路径点</span>
  71. </a>
  72. </span>
  73. </div>
  74. </div>
  75. <div id="container"></div>
  76. </div>
  77. </div>
  78. </body>
  79. <script src = "webpage/cn/com/lzt/car/schedule/carScheduleList.js"></script>
  80. <script type="text/javascript">
  81. $(function(){
  82. var newtitle = '【' +'${schedule.carname}' + '】' + '${schedule.start}' + '~' +'${schedule.end}'+' 作业途径点位列表'; //
  83. $("#detailList").datagrid({title:newtitle});
  84. });
  85. function addPoint(){
  86. if(!$('#jing').val()){
  87. tip('请先在地图上选择位置,然后再添加到路径点');
  88. return;
  89. }
  90. var str = $('#seq').val();
  91. var n = Number(str);
  92. if (isNaN(n))
  93. {
  94. tip('序号只能填写数字,请重新录入');
  95. return;
  96. }
  97. $.ajax({
  98. url:"carScheduleDetailController.do?doAddFromMap",
  99. data:{scheduleid:$('#scheduleid').val(),
  100. lng:$('#jing').val(),
  101. lat:$('#wei').val(),
  102. seq:$('#seq').val()},
  103. type:"Post",
  104. dataType:"json",
  105. success:function(data){
  106. if(data.success){
  107. tip(data.msg);
  108. $("#detailList").datagrid('reload');
  109. $('#seq').val('');
  110. }else{
  111. $.messager.alert('提示信息',data.msg);
  112. }
  113. }});
  114. /* //添加完刷新表格
  115. $('#detailList').datagrid({
  116. queryParams:{scheduleid:$('#scheduleid').val()}
  117. });
  118. $("#detailList").datagrid('reload'); */
  119. }
  120. var myLabels = [];
  121. function showAllPoint(){
  122. $.ajax({
  123. url:"carScheduleDetailController.do?all",
  124. data:{scheduleid:$('#scheduleid').val()},
  125. type:"Post",
  126. dataType:"json",
  127. success:function(data){
  128. if(data.status=="success"){
  129. map.clearOverlays();
  130. var point = new BMap.Point(data.details[0]['lng'],data.details[0]['lat']);
  131. map.centerAndZoom(point,13);
  132. myLabels = [];
  133. for(var i =0; i < data.details.length;i++){
  134. var maker = addMarker(new BMap.Point(data.details[i]['lng'], data.details[i]['lat']));
  135. addInfoWindow(maker, data.details[i]['address'],data.details[i]['seq']);
  136. }
  137. }else{
  138. $.messager.alert('提示信息',"未查询到途经点信息");
  139. }
  140. }});
  141. }
  142. //添加信息窗口
  143. function addInfoWindow(marker, content,number) {
  144. var offsetSize = new BMap.Size(0, 0);
  145. var labelStyle = {
  146. color: "#fff",
  147. backgroundColor: "0.05",
  148. border: "0"
  149. };
  150. //不同数字长度需要设置不同的样式。
  151. switch((number + '').length) {
  152. case 1:
  153. labelStyle.fontSize = "14px";
  154. offsetSize = new BMap.Size(4, 2);
  155. break;
  156. case 2:
  157. labelStyle.fontSize = "12px";
  158. offsetSize = new BMap.Size(2, 4);
  159. break;
  160. case 3:
  161. labelStyle.fontSize = "10px";
  162. offsetSize = new BMap.Size(-2, 4);
  163. break;
  164. default:
  165. break;
  166. }
  167. var label = new BMap.Label(number, {
  168. offset: offsetSize
  169. });
  170. label.setStyle(labelStyle);
  171. marker.setLabel(label);
  172. var label = new window.BMap.Label(content, { offset: new BMap.Size(20, -10) });
  173. marker.setLabel(label);
  174. }
  175. //添加标注
  176. function addMarker(point) {
  177. var marker = new BMap.Marker(point);
  178. map.addOverlay(marker);
  179. return marker;
  180. }
  181. function deletePoine(){
  182. $.ajax({
  183. url:"carScheduleDetailController.do?doDelByPoint",
  184. data:{scheduleid:$('#scheduleid').val(),
  185. lng:$('#jing').val(),
  186. lat:$('#wei').val()},
  187. type:"Post",
  188. dataType:"json",
  189. success:function(data){
  190. if(data.status=="success"){
  191. }else{
  192. $.messager.alert('提示信息',"添加到路径点失败");
  193. }
  194. }});
  195. }
  196. function showPoint(lng,lat,address){
  197. //清除地图上的marker
  198. map.clearOverlays();
  199. var marker = new BMap.Marker(new BMap.Point(lng, lat));
  200. var myLabel = setLabelStyle(address);
  201. marker.addEventListener("mouseover", function() {
  202. marker.setLabel(myLabel) //鼠标移入maker显示文字标签
  203. });
  204. marker.addEventListener("mouseout", function (e) {
  205. map.removeOverlay(marker.getLabel()) //鼠标移除maker隐藏文字标签
  206. });
  207. map.addOverlay(marker);
  208. }
  209. function setLabelStyle(content) {
  210. //左偏移 右偏移
  211. var offsetSize = new BMap.Size(0, 0);
  212. var labelStyle = {
  213. color: "#fff",
  214. backgroundColor: "#333333",
  215. border: "0",
  216. fontSize : "14px",
  217. width:"200px",
  218. opacity:"0.8",
  219. verticalAlign:"center",
  220. borderRadius: "2px",
  221. whiteSpace:"normal",
  222. wordWrap:"break-word",
  223. padding:"7px",
  224. };
  225. //用于设置样式
  226. var spanA="<span class='angle'><span>";
  227. //不同数字长度需要设置不同的样式。
  228. var num=parseInt(content.length/10)
  229. switch(num) {
  230. case 0:
  231. offsetSize = new BMap.Size(-20, -40);
  232. break;
  233. case 1:
  234. offsetSize = new BMap.Size(-20, -40);
  235. break;
  236. case 2:
  237. offsetSize = new BMap.Size(-20, -60);
  238. break;
  239. case 3:
  240. offsetSize = new BMap.Size(-20, -80);
  241. break;
  242. default:
  243. break;
  244. }
  245. var label = new BMap.Label(content+spanA, {
  246. offset: offsetSize
  247. });
  248. label.setStyle(labelStyle);
  249. return label;
  250. }
  251. var lng = document.getElementById('jing');
  252. var lat = document.getElementById('wei');
  253. var map = new BMap.Map("container");
  254. var point = new BMap.Point(121.130254,31.156433);
  255. var myGeo = new BMap.Geocoder();// 将地址解析结果显示在地图上,并调整地图视野
  256. map.centerAndZoom(point,13);
  257. map.enableScrollWheelZoom();
  258. map.addControl(new BMap.NavigationControl()); //缩放按钮
  259. var ac = new BMap.Autocomplete( //建立一个自动完成的对象
  260. {"input" : "suggestId"
  261. ,"location" : map
  262. });
  263. ac.addEventListener("onhighlight", function(e) { //鼠标放在下拉列表上的事件
  264. /* var str = "";
  265. var _value = e.fromitem.value;
  266. var value = "";
  267. if (e.fromitem.index > -1) {
  268. value = _value.province + _value.city + _value.district + _value.street + _value.business;
  269. }
  270. str = "FromItem<br />index = " + e.fromitem.index + "<br />value = " + value;
  271. value = "";
  272. if (e.toitem.index > -1) {
  273. _value = e.toitem.value;
  274. value = _value.province + _value.city + _value.district + _value.street + _value.business;
  275. }
  276. str += "<br />ToItem<br />index = " + e.toitem.index + "<br />value = " + value;
  277. G("searchResultPanel").innerHTML = str; */
  278. });
  279. var myValue;
  280. ac.addEventListener("onconfirm", function(e) { //鼠标点击下拉列表后的事件
  281. lng.value = '';
  282. lat.value = '';
  283. var _value = e.item.value;
  284. myValue = _value.province + _value.city + _value.district + _value.street + _value.business;
  285. /* G("searchResultPanel").innerHTML ="onconfirm<br />index = " + e.item.index + "<br />myValue = " + myValue; */
  286. setPlace();
  287. });
  288. function setPlace(){// 创建地址解析器实例
  289. myGeo.getPoint(myValue, function(point){
  290. if (point) {
  291. lng.value = point.lng;
  292. lat.value = point.lat;
  293. map.centerAndZoom(point, 16);
  294. map.addOverlay(new BMap.Marker(point));
  295. }
  296. }, "上海");
  297. }
  298. map.addEventListener('click', function (e) {
  299. lng.value = e.point.lng;
  300. lat.value = e.point.lat;
  301. //清除地图上的marker
  302. map.clearOverlays();
  303. var pt = e.point;
  304. var marker = new BMap.Marker(new BMap.Point(pt.lng, pt.lat));
  305. map.addOverlay(marker);
  306. //myGeo.getLocation(pt, function(rs){
  307. //addressComponents对象可以获取到详细的地址信息
  308. //var addComp = rs.addressComponents;
  309. //var site = addComp.province + addComp.city + addComp.district + addComp.street + addComp.streetNumber;
  310. //$("#address").val(site);
  311. //设置放大倍数
  312. //map.centerAndZoom(new BMap.Point(pt.lng, pt.lat), 18);
  313. //将对应的HTML元素设置值
  314. //$("#addressLonglat").val(pt.lng+","+pt.lat);
  315. // });
  316. })
  317. function onloaded(){
  318. var _grid = $('#detailList');
  319. var tableTd = $('div.datagrid-body td[field="address"]');
  320. tableTd.each(function () {
  321. var $this = $(this);
  322. var index = $this.parent('tr').attr('datagrid-row-index');
  323. var rows = _grid.datagrid('getRows');
  324. var currentRow = rows[index];
  325. var content = '<div style="font-size:16px; max-width:700px;word-break: break-all; word-wrap: break-word;">' + currentRow.address + '</div>';
  326. $this.tips({ content: content, wrapColor: 'black' });
  327. });
  328. }
  329. </script>