routeSearch.js 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. /**
  2. * @fileoverview 路径规划服务
  3. * @author Song.Huang
  4. * @version 1.0.0
  5. */
  6. define(function(){
  7. var routeSearch = function() {
  8. /** 必经点+规避点路线规划
  9. * [getNaviPathPro description]
  10. * @param {[type]} options [viaAry(第一个为起点,最后一个为终点,中间的为必经点) avoidAry(规避点数组)]
  11. * @param {[type]} callbackFunc [description]
  12. * @return {[type]} [description]
  13. */
  14. this.getNaviPath = function(options, callbackFunc) {
  15. var orig,dest,mid,afUrl;
  16. var viaAryLength = options.viaAry.length;
  17. if(viaAryLength < 3){
  18. if(options.searchType != 5){
  19. afUrl = '?token=25cc55a69ea7422182d00d6b7c0ffa93&source=1&sPoint=' + options.viaAry[0] +
  20. '&ePoint=' + options.viaAry[1] +
  21. '&st='+options.searchType;
  22. } else{
  23. var aab = options.bounds[0];
  24. if(options.bounds.length > 1){
  25. for(var i=1;i<options.bounds.length;i++){
  26. aab += '|'+options.bounds[i];
  27. }
  28. } else if(options.bounds.length == 1){
  29. aab = options.bounds[0];
  30. }
  31. afUrl = '?token=25cc55a69ea7422182d00d6b7c0ffa93&source=1&sPoint=' + options.viaAry[0] +
  32. '&ePoint=' + options.viaAry[1] +
  33. '&st='+options.searchType+'&avoidArea='+aab;
  34. }
  35. }
  36. else if(viaAryLength >= 3){
  37. var midData;
  38. {
  39. for(var i=1;i<viaAryLength-1;i++){
  40. var curmidData = JSON.stringify(options.viaAry[i]).replace('[','').replace(']','');
  41. if(i===1){
  42. midData = curmidData;
  43. }else{
  44. midData = midData+";"+curmidData;
  45. }
  46. }
  47. }
  48. if(options.searchType != 5){
  49. afUrl = '?token=25cc55a69ea7422182d00d6b7c0ffa93&source=1&sPoint=' + options.viaAry[0] +
  50. '&ePoint=' + options.viaAry[viaAryLength-1] +
  51. '&wayPoints=' + midData +
  52. '&st='+options.searchType;
  53. } else{
  54. var aab = options.bounds[0];
  55. if(options.bounds.length > 1){
  56. for(var i=1;i<options.bounds.length;i++){
  57. aab += '|'+options.bounds[i];
  58. }
  59. } else if(options.bounds.length == 1){
  60. aab = options.bounds[0];
  61. }
  62. afUrl = '?token=25cc55a69ea7422182d00d6b7c0ffa93&source=1&sPoint=' + options.viaAry[0] +
  63. '&ePoint=' + options.viaAry[viaAryLength-1] +
  64. '&wayPoints=' + midData +
  65. '&st='+options.searchType+'&avoidArea='+aab;
  66. }
  67. }
  68. var sUrl = onemapUrlConfig.siWeiRouteDataUrl + '/service/route/driving2' +
  69. afUrl;
  70. ONEMAP.V.loading.load();
  71. $.ajax({
  72. url: sUrl,
  73. type: 'GET',
  74. dataType: 'json'
  75. })
  76. .done(function(data) {
  77. ONEMAP.V.loading.loaded();
  78. var segArr = new Array();
  79. var coorArr = new Array();
  80. var coors= "";
  81. var doorArr = new Array();
  82. if(!data.data){
  83. callbackFunc({
  84. "code": 0,
  85. "data":[]
  86. })
  87. return false;
  88. }
  89. if(data.data.rows.length > 0){
  90. for(var i=0;i<data.data.rows[0].item.length;i++){
  91. if(data.data.rows[0].item[i].routelatlon){
  92. coorArr[i] = data.data.rows[0].item[i].routelatlon.replace(/;/g,",");
  93. }else{
  94. coorArr[i] = data.data.rows[0].item[i].turnlatlon.replace(/;/g,",");
  95. }
  96. var roadLength;
  97. var roadOld = data.data.rows[0].item[i].distance;
  98. roadLength = parseFloat(data.data.rows[0].item[i].distance);
  99. segArr[i] = {
  100. "accessorialInfo": "",
  101. "action": "",
  102. "coor": coorArr[i],
  103. "coorAry": coorArr[i].split(","),
  104. "direction": 0.0,
  105. "driveTime": "",
  106. "form": "",
  107. "grade": "",
  108. "roadLength": roadLength,
  109. "roadName": data.data.rows[0].item[i].streetName,
  110. "soundID": "",
  111. "textInfo": data.data.rows[0].item[i].strguide,
  112. "videoID": ""
  113. }
  114. if(data.data.rows[0].item[i].routelatlon){
  115. coors += data.data.rows[0].item[i].routelatlon.replace(/;/g,",");
  116. }else{
  117. coors += data.data.rows[0].item[i].turnlatlon.replace(/;/g,",");
  118. }
  119. }
  120. var cbData = {
  121. "code": 0,
  122. "data": {
  123. "bounds": options.viaAry[0] + "," + options.viaAry[viaAryLength-1],
  124. "cache": false,
  125. "coors": coors,
  126. "count": parseInt(data.data.rows[0].count),
  127. "message": "ok",
  128. //"searchtime": parseInt(data.lines.time),
  129. "segmengList": segArr
  130. }
  131. }
  132. }else {
  133. callbackFunc({
  134. "code": 0,
  135. "data":[]
  136. })
  137. }
  138. callbackFunc(cbData);
  139. })
  140. .fail(function() {
  141. ONEMAP.V.loading.loaded();
  142. });
  143. }
  144. };
  145. return routeSearch;
  146. })