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