首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

分享一个查询公交路线的模块解决方案

2013-01-05 
分享一个查询公交路线的模块因为公司业务需要,昨天开发了这个小程序.支持以下城市的公交路线查询,支持跨市

分享一个查询公交路线的模块
因为公司业务需要,昨天开发了这个小程序.支持以下城市的公交路线查询,支持跨市查询.
支持的城市:
北京广州上海深圳佛山东莞
香港惠州珠海中山江门天津
杭州武汉长沙重庆成都苏州
南京大连清远肇庆云浮阳江
茂名湛江韶关梅州潮州汕头
河源汕尾济南揭阳

DLL下载地址:http://http://lib.ldong.net/jl/getBus.rar

DLL文件名:getbus.dll
组件和类名:hslPlugins.cbus
有以下属性和方法



SearchRoutins:执行路线查询.返回值:查询执行状态.
返回0表示出错了.
返回1表示有多个起点或终点,需要进一步选择起点或终点,在RoutinString中将返回以||分隔的待选的起点和终点列表.在Routins数组中将返回起点和终点列表.
返回2则表示查询到了交通路线.RoutinString将返回各种路线,以||分隔.越排在前表示交通越快.Routins数组将返回路线列表.


StartCity:起始城市,默认是我所在的城市,东莞.
DestinationCity:终点城市,默认是我所在的城市,东莞.
StartStation:起点站
DestinationStation:终点站
Timeout:设置查询超时.单位为秒.默认是3秒.
Routins:返回路线数组.
RoutinsString:返回路线文字,以||分隔.
ErrorString:返回错误描述.



SQL调用方法:

--Split函数 
alter  FUNCTION [dbo].Split     
             (@SourceStr varchar(max),@Delimiter VARCHAR(20))--源字符串    
    
RETURNS  @table table(list  varchar(2000) )      
  AS      
BEGIN    

  SELECT @SourceStr=REPLACE(@SourceStr, @Delimiter,'$')     
   if charindex('$',@sourcestr)>0      
    begin    
      declare @i int    
      declare @n int    
      set @i=1    
      while charindex('$',@sourcestr,@i)>0    
        begin    
           set @n=charindex('$',@sourcestr,@i)    
           insert into @table values(substring(@sourcestr,@i, @n-@i) )    
           set @i=@n+1    
        end    
        insert into @table values(substring(@sourcestr,@i,len(@sourcestr)-@i+1))    
    end  else insert into @table values(@sourcestr)    
    
  delete from @table where isnull(list,'') = ''    
return    
END    
    
--交通查询存储过程
Create PROC sp_SearchRoutin
@StartCity VARCHAR(50)='东莞',
@StartStation VARCHAR(200),
@DestinationCity VARCHAR(50)='东莞',
@DestinationStation VARCHAR(200),
@Routins VARCHAR(5000)='' OUTPUT,
@status INT=0 OUTPUT,
@ErrorString VARCHAR(200)='' output
AS
BEGIN
DECLARE @hInstance INT,@ret INT,@retstr VARCHAR(2000),@source varchar(200),@description varchar(200)
EXEC  @ret=sp_oacreate 'hslPlugins.cbus',@hInstance OUTPUT
print @ret
EXEC @ret = sp_OAGetErrorInfo NULL, @source OUT, @description OUT
--print @description
--EXEC sp_oadestroy @hInstance
EXEC @ret=sp_oasetproperty @hInstance,'StartCity',@StartCity


EXEC @ret=sp_oasetproperty @hInstance,'DestinationCity',@DestinationCity
EXEC @ret=sp_oasetproperty @hInstance,'StartStation',@StartStation
EXEC @ret=sp_oasetproperty @hInstance,'DestinationStation',@DestinationStation
EXEC @ret=sp_oamethod @hInstance,'SearchRoutins',@status OUT
EXEC @ret =sp_oagetproperty @hInstance,'RoutinsString',@Routins OUT
EXEC sp_oadestroy @hInstance
SELECT List '乘车路线' from SPLIT(@Routins,'||')
return
end

--示例:
declare @s1 varchar(2000),@s2 int,@s3 varchar(2000)
exec sp_SearchRoutin '东莞','行政中心西','东莞','火炼树综合市场',@s1 output,@s2 output,@s3 output
print @s1
print @s2

 1.从行政中心西站乘坐9路(坐2站)、C2路(坐2站)到新世纪豪园西站下。走约520米到火炼树综合市场
   2.乘坐出租车,共行驶2.8公里,费用约11元。晚上23:00点以后,费用约12元。注意:信息仅供参考,不可作为支付依据.本费用中不含过路费和过桥费,塞车等因素可能使费用显著增加。
   3.从行政中心西站走约730米到电信局站(南城)乘坐小巴x5线(坐3站)到火炼树村站下。往前走约230米到火炼树综合市场
   4.从行政中心西站乘坐9路(坐1站)、C2路(坐1站)到会展中心站(南城)转乘46路(坐1站)、小巴x5线(坐2站)到火炼树村站下。往前走约230米到火炼树综合市场
   5.从行政中心西站走约730米到电信局站(南城)乘坐小巴x13线(坐2站)到新世纪豪园西站下。走约520米到火炼树综合市场
   6.从行政中心西站乘坐8路(坐1站)到体育馆东站(莞城)走到马路对面的体育馆东站(莞城)转乘46路(坐3站)到火炼树村站下。往前走约230米到火炼树综合市场
   7.从行政中心西站乘坐47路(坐1站)、8路(坐1站)、59路(坐1站)到电信局站(南城)走到马路对面的电信局站(南城)转乘小巴x5线(坐3站)到火炼树村站下。往前走约230米到火炼树综合市场
   8.从行政中心西站乘坐9路(坐4站)到景湖春天站(南城)走到马路对面的景湖春天站(南城)转乘18路(坐1站)到火炼树村站下。过马路往左走约220米到火炼树综合市场
   9.从行政中心西站乘坐26路(坐1站)到电信局总站(南城)下,过马路往右走到电信局站(南城)转乘小巴x5线(坐3站)到火炼树村站下。往前走约230米到火炼树综合市场  



[解决办法]
感谢分享分享一个查询公交路线的模块解决方案
[解决办法]
分享一个查询公交路线的模块解决方案
lz解禁了
[解决办法]

[解决办法]

[解决办法]
谢谢分享...
[解决办法]
+100
引用:
引用:
lz解禁了

解禁了.但对CSDN管理员的鄙视坚定不移.

[解决办法]
up,多谢分享

热点排行