/// <summary>
 /// 拷贝构造函数
 /// </summary>
 /// <param name="trafficTransferAnalystParameter">TrafficTransferAnalystParameter对象。</param>
 public TrafficTransferAnalystParameter(TrafficTransferAnalystParameter trafficTransferAnalystParameter)
 {
     if (trafficTransferAnalystParameter == null)
     {
         throw new ArgumentNullException();
     }
     SolutionCount = trafficTransferAnalystParameter.SolutionCount;
     TransferTactic = trafficTransferAnalystParameter.TransferTactic;
     TransferPreference = trafficTransferAnalystParameter.TransferPreference;
     WalkingRatio = trafficTransferAnalystParameter.WalkingRatio;
 }
        public void FindTransferSolutionsAsync(string transferNetName, Point2D startPosition, Point2D endPosition, TrafficTransferAnalystParameter trafficTransferAnalystParameter, EventHandler<TransferAnalystSolutionEventArgs> completed, EventHandler<FailedEventArgs> failed)
        {
            string uri = string.Format("{0}/traffictransferanalyst/{1}/solutions.rjson?points={2}&solutionCount={3}&transferTactic={4}&transferPreference={5}&walkingRatio={6}",
               this._serviceUrl, transferNetName, JsonConvert.SerializeObject(new Point2D[] { startPosition, endPosition }), trafficTransferAnalystParameter.SolutionCount, trafficTransferAnalystParameter.TransferTactic, trafficTransferAnalystParameter.TransferPreference, trafficTransferAnalystParameter.WalkingRatio);
            
            EventHandler<AsyncEventArgs<string>> callback = (sender, e) =>
            {
                if (e != null)
                {
                    TransferSolutions result = JsonConvert.DeserializeObject<TransferSolutions>(e.Result);

                    if (completed != null)
                    {
                        completed(this, new TransferAnalystSolutionEventArgs(result));
                    }
                }
            };
            AsyncHttpRequest.DownloadStringAsync(uri, null, callback, failed);
        }
 public TransferSolutions FindTransferSolutions(string transferNetName, Point2D startPosition, Point2D endPosition, TrafficTransferAnalystParameter trafficTransferAnalystParameter)
 {
     string uri = string.Format("{0}/traffictransferanalyst/{1}/solutions.rjson?points={2}&solutionCount={3}&transferTactic={4}&transferPreference={5}&walkingRatio={6}",
        this._serviceUrl, transferNetName, JsonConvert.SerializeObject(new Point2D[] { startPosition, endPosition }), trafficTransferAnalystParameter.SolutionCount, trafficTransferAnalystParameter.TransferTactic, trafficTransferAnalystParameter.TransferPreference, trafficTransferAnalystParameter.WalkingRatio);
     string result = SynchHttpRequest.GetRequestString(uri);
     return JsonConvert.DeserializeObject<TransferSolutions>(result);
 }
 public TransferSolutions FindTransferSolutions(string transferNetName, long startStopID, long endStopID, TrafficTransferAnalystParameter trafficTransferAnalystParameter)
 {
     string uri = string.Format("{0}/traffictransferanalyst/{1}/solutions.rjson?points=[{2},{3}]&solutionCount={4}&transferTactic={5}&transferPreference={6}&walkingRatio={7}",
        this._serviceUrl, transferNetName, startStopID, endStopID, trafficTransferAnalystParameter.SolutionCount, trafficTransferAnalystParameter.TransferTactic, trafficTransferAnalystParameter.TransferPreference, trafficTransferAnalystParameter.WalkingRatio);
     string result = SynchHttpRequest.GetRequestString(uri);
     return JsonConvert.DeserializeObject<TransferSolutions>(result);
 }
        /// <summary>
        /// 通过异步方式根据指定的起止点坐标及交通换乘分析参数进行交通换乘分析。
        /// </summary>
        /// <param name="transferNetName">公交网络名字。</param>
        /// <param name="startPosition">起始点坐标。</param>
        /// <param name="endPosition">终止点坐标。</param>
        /// <param name="trafficTransferAnalystParameter">交通换乘分析参数。</param>
        /// <param name="completed">完成后执行的方法。</param>
        /// <param name="failed">发生异常后执行的方法。</param>
        /// <exception cref="ArgumentNullException">参数transferNetName、trafficTransferAnalystParameter、startPosition或者endPosition为空时抛出异常。</exception>
        public void FindTransferSolutions(string transferNetName, Point2D startPosition, Point2D endPosition, TrafficTransferAnalystParameter trafficTransferAnalystParameter, EventHandler<TransferAnalystSolutionEventArgs> completed, EventHandler<FailedEventArgs> failed)
        {
            if (string.IsNullOrEmpty(transferNetName))
            {
                throw new ArgumentNullException("transferNetName");
            }
            if (trafficTransferAnalystParameter == null)
            {
                throw new ArgumentNullException("trafficTransferAnalystParameter");
            }
            if (startPosition == null)
            {
                throw new ArgumentNullException("startPosition");
            }
            if (endPosition == null)
            {
                throw new ArgumentNullException("endPosition");
            }

            EventHandler<TransferAnalystSolutionEventArgs> callback = (sender, e) =>
            {
                if (completed != null)
                {
                    completed(this, e);
                }
            };

            _trafficTransferAnalystProvider.FindTransferSolutionsAsync(transferNetName, startPosition, endPosition, trafficTransferAnalystParameter, callback, failed);
        }
        /// <summary>
        /// 根据指定的起止点坐标及交通换乘分析参数进行交通换乘分析。
        /// </summary>
        /// <param name="transferNetName">公交网络名字。</param>
        /// <param name="startPosition">起始点坐标。</param>
        /// <param name="endPosition">终止点坐标。</param>
        /// <param name="trafficTransferAnalystParameter">交通换乘分析参数。</param>
        /// <returns>交通换乘方案集合。</returns>
        /// <exception cref="ArgumentNullException">参数transferNetName、trafficTransferAnalystParameter、startPosition或者endPosition为空时抛出异常。</exception>
        public TransferSolutions FindTransferSolutions(string transferNetName, Point2D startPosition, Point2D endPosition, TrafficTransferAnalystParameter trafficTransferAnalystParameter)
        {
            if (string.IsNullOrEmpty(transferNetName))
            {
                throw new ArgumentNullException("transferNetName");
            }
            if (trafficTransferAnalystParameter == null)
            {
                throw new ArgumentNullException("trafficTransferAnalystParameter");
            }
            if (startPosition == null)
            {
                throw new ArgumentNullException("startPosition");
            }
            if (endPosition == null)
            {
                throw new ArgumentNullException("endPosition");
            }

            return _trafficTransferAnalystProvider.FindTransferSolutions(transferNetName, startPosition, endPosition, trafficTransferAnalystParameter);
        }
        /// <summary>
        /// 根据指定的起止站点 ID 及交通换乘分析参数进行交通换乘分析。
        /// </summary>
        /// <param name="transferNetName">公交网络名字。</param>
        /// <param name="startStopID">起始站点 ID。</param>
        /// <param name="endStopID">终止站点 ID。</param>
        /// <param name="trafficTransferAnalystParameter">交通换乘分析参数。</param>
        /// <returns>交通换乘方案集合。</returns>
        /// <exception cref="ArgumentNullException">参数transferNetName或者trafficTransferAnalystParameter为空时抛出异常。</exception>
        public TransferSolutions FindTransferSolutions(string transferNetName, long startStopID, long endStopID, TrafficTransferAnalystParameter trafficTransferAnalystParameter)
        {
            if (string.IsNullOrEmpty(transferNetName))
            {
                throw new ArgumentNullException("transferNetName");
            }
            if (trafficTransferAnalystParameter == null)
            {
                throw new ArgumentNullException("trafficTransferAnalystParameter");
            }

            return _trafficTransferAnalystProvider.FindTransferSolutions(transferNetName, startStopID, endStopID, trafficTransferAnalystParameter);
        }