123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- /**
- * @fileoverview 路径规划服务
- * @author Song.Huang
- * @version 1.0.0
- */
- define(function(){
- var routeSearch = function() {
- /** 必经点+规避点路线规划
- * [getNaviPathPro description]
- * @param {[type]} options [viaAry(第一个为起点,最后一个为终点,中间的为必经点) avoidAry(规避点数组)]
- * @param {[type]} callbackFunc [description]
- * @return {[type]} [description]
- */
- this.getNaviPath = function(options, callbackFunc) {
- var orig,dest,mid,afUrl;
- var viaAryLength = options.viaAry.length;
- if(viaAryLength < 3){
- if(options.searchType != 5){
- afUrl = '?token=25cc55a69ea7422182d00d6b7c0ffa93&source=1&sPoint=' + options.viaAry[0] +
- '&ePoint=' + options.viaAry[1] +
- '&st='+options.searchType;
- } else{
- var aab = options.bounds[0];
- if(options.bounds.length > 1){
- for(var i=1;i<options.bounds.length;i++){
- aab += '|'+options.bounds[i];
- }
- } else if(options.bounds.length == 1){
- aab = options.bounds[0];
- }
- afUrl = '?token=25cc55a69ea7422182d00d6b7c0ffa93&source=1&sPoint=' + options.viaAry[0] +
- '&ePoint=' + options.viaAry[1] +
- '&st='+options.searchType+'&avoidArea='+aab;
- }
- }
- else if(viaAryLength >= 3){
- var midData;
- {
- for(var i=1;i<viaAryLength-1;i++){
- var curmidData = JSON.stringify(options.viaAry[i]).replace('[','').replace(']','');
- if(i===1){
- midData = curmidData;
- }else{
- midData = midData+";"+curmidData;
- }
- }
- }
- if(options.searchType != 5){
- afUrl = '?token=25cc55a69ea7422182d00d6b7c0ffa93&source=1&sPoint=' + options.viaAry[0] +
- '&ePoint=' + options.viaAry[viaAryLength-1] +
- '&wayPoints=' + midData +
- '&st='+options.searchType;
- } else{
- var aab = options.bounds[0];
- if(options.bounds.length > 1){
- for(var i=1;i<options.bounds.length;i++){
- aab += '|'+options.bounds[i];
- }
- } else if(options.bounds.length == 1){
- aab = options.bounds[0];
- }
- afUrl = '?token=25cc55a69ea7422182d00d6b7c0ffa93&source=1&sPoint=' + options.viaAry[0] +
- '&ePoint=' + options.viaAry[viaAryLength-1] +
- '&wayPoints=' + midData +
- '&st='+options.searchType+'&avoidArea='+aab;
- }
-
- }
- var sUrl = onemapUrlConfig.siWeiRouteDataUrl + '/service/route/driving2' +
- afUrl;
- ONEMAP.V.loading.load();
- $.ajax({
- url: sUrl,
- type: 'GET',
- dataType: 'json'
- })
- .done(function(data) {
- ONEMAP.V.loading.loaded();
- var segArr = new Array();
- var coorArr = new Array();
- var coors= "";
- var doorArr = new Array();
- if(!data.data){
- callbackFunc({
- "code": 0,
- "data":[]
- })
- return false;
- }
- if(data.data.rows.length > 0){
- for(var i=0;i<data.data.rows[0].item.length;i++){
- if(data.data.rows[0].item[i].routelatlon){
- coorArr[i] = data.data.rows[0].item[i].routelatlon.replace(/;/g,",");
- }else{
- coorArr[i] = data.data.rows[0].item[i].turnlatlon.replace(/;/g,",");
- }
-
- var roadLength;
- var roadOld = data.data.rows[0].item[i].distance;
-
- roadLength = parseFloat(data.data.rows[0].item[i].distance);
- segArr[i] = {
- "accessorialInfo": "",
- "action": "",
- "coor": coorArr[i],
- "coorAry": coorArr[i].split(","),
- "direction": 0.0,
- "driveTime": "",
- "form": "",
- "grade": "",
- "roadLength": roadLength,
- "roadName": data.data.rows[0].item[i].streetName,
- "soundID": "",
- "textInfo": data.data.rows[0].item[i].strguide,
- "videoID": ""
- }
- if(data.data.rows[0].item[i].routelatlon){
- coors += data.data.rows[0].item[i].routelatlon.replace(/;/g,",");
- }else{
- coors += data.data.rows[0].item[i].turnlatlon.replace(/;/g,",");
- }
-
- }
- var cbData = {
- "code": 0,
- "data": {
- "bounds": options.viaAry[0] + "," + options.viaAry[viaAryLength-1],
- "cache": false,
- "coors": coors,
- "count": parseInt(data.data.rows[0].count),
- "message": "ok",
- //"searchtime": parseInt(data.lines.time),
- "segmengList": segArr
- }
- }
- }else {
- callbackFunc({
- "code": 0,
- "data":[]
- })
- }
- callbackFunc(cbData);
- })
- .fail(function() {
- ONEMAP.V.loading.loaded();
- });
- }
- };
- return routeSearch;
- })
|