获得经过一个站点的所有公交线路-百万公交
2015-04-04 16:05
141 查看
简述
这个需求其实就是输入站点名称,经过该站点的所有公交线路。有的地方公交牌上线路可能不全,更换不及时,有这个功能就可以确定是否在这里等车。
遇到的困难
因为想偷懒,所有就直接去百度其他人是否有现成的做法。翻了很久,只看到零星的说在JavaScript上有这个方法,可以 获得所有线路。怎样都不死心,看到其他人在贴吧也提过问题,没有解决。在百度LBS论坛上发帖子问,版主回答我说没有。这个版主误导了我,不过他一个人回复论坛所有人的提问也是非常的辛苦。
如何解决?
当时的情况是,认为Android没有接口可以得到通过一个站点的所有线路。不过看到百度公交上是有这个功能的,确定自己也能够做出来这个功能。想了两种方式
通过在项目里加入网页,代码和网页中的JavaScript交互,得到结果
在自己的服务器上面添加方法,对百度LBS查询,获得结果,返回给客户端
我选择的是第一种,后备的方式第二种,一样也可以学到很多东西。又折腾两天,这种资料的查询还是GOOGLE DOCS的最权威。这里遇到的最大的问题是,我将加载网页的WebView设置为Gone,但是Gone的情况下得不到webview的焦点,获得不了网页的JavaScript的内容。最后给WebView设置了1dp大小。的确是能够获得到线路了。不过这样并不好,因为加载网页也要时间,再获得内容,耗费的时间太长了。
更好的解决方法
翻LBS DOCS是时候,看到PoiInfo的所有字段。address,city,location,type等等。PoiInfo.POITYPE里有枚举,poi类型,0:普通点,1:公交站,2:公交线路,3:地铁站,4:地铁线路。 在JavaScript里明确说明,如果一个PoiInfo.POITYPE = BUS_STATION, address是所有经过这站点的车辆。
困惑我的地方
糟糕的是,LBS Android的DOCS里,很模糊的说 address(POI地址信息)。这是什么鬼东西。其实试一试就可以了。如果一个poi时公交站点,address也同样是经过这个站点的所有车辆。问题迎刃而解。
代码中的实现
很简单吧
结论:对获得的PoiInfo.type 类型比较,如果是 POITYPE.BUS_STATION
String[] lineArray = poiInfo.address.split(“;”);
这个数组里就是所有的公交车线路了。
这个需求其实就是输入站点名称,经过该站点的所有公交线路。有的地方公交牌上线路可能不全,更换不及时,有这个功能就可以确定是否在这里等车。
遇到的困难
因为想偷懒,所有就直接去百度其他人是否有现成的做法。翻了很久,只看到零星的说在JavaScript上有这个方法,可以 获得所有线路。怎样都不死心,看到其他人在贴吧也提过问题,没有解决。在百度LBS论坛上发帖子问,版主回答我说没有。这个版主误导了我,不过他一个人回复论坛所有人的提问也是非常的辛苦。
如何解决?
当时的情况是,认为Android没有接口可以得到通过一个站点的所有线路。不过看到百度公交上是有这个功能的,确定自己也能够做出来这个功能。想了两种方式
通过在项目里加入网页,代码和网页中的JavaScript交互,得到结果
在自己的服务器上面添加方法,对百度LBS查询,获得结果,返回给客户端
我选择的是第一种,后备的方式第二种,一样也可以学到很多东西。又折腾两天,这种资料的查询还是GOOGLE DOCS的最权威。这里遇到的最大的问题是,我将加载网页的WebView设置为Gone,但是Gone的情况下得不到webview的焦点,获得不了网页的JavaScript的内容。最后给WebView设置了1dp大小。的确是能够获得到线路了。不过这样并不好,因为加载网页也要时间,再获得内容,耗费的时间太长了。
更好的解决方法
翻LBS DOCS是时候,看到PoiInfo的所有字段。address,city,location,type等等。PoiInfo.POITYPE里有枚举,poi类型,0:普通点,1:公交站,2:公交线路,3:地铁站,4:地铁线路。 在JavaScript里明确说明,如果一个PoiInfo.POITYPE = BUS_STATION, address是所有经过这站点的车辆。
困惑我的地方
糟糕的是,LBS Android的DOCS里,很模糊的说 address(POI地址信息)。这是什么鬼东西。其实试一试就可以了。如果一个poi时公交站点,address也同样是经过这个站点的所有车辆。问题迎刃而解。
代码中的实现
List<PoiInfo> info = result.getAllPoi(); for(PoiInfo poiInfo: info){ if(poiInfo.type == POITYPE.BUS_STATION){ String[] lineArray = poiInfo.address.split(";"); for(int i =0;i<lineArray.length;i++){ arrayListLine.add(lineArray[i]); } Intent intent = new Intent(getActivity().getBaseContext(),LineListActivity.class); intent.putExtra("stationLine", arrayListLine); intent.putExtra("stationName", poiInfo.name); startActivity(intent); return; }
很简单吧
结论:对获得的PoiInfo.type 类型比较,如果是 POITYPE.BUS_STATION
String[] lineArray = poiInfo.address.split(“;”);
这个数组里就是所有的公交车线路了。
相关文章推荐
- 使用百度地图查询经过某一公交站的所有公交线路
- 扫描一个目录下的所有文件,获得文件名
- Shark编程实例:启动一个流程,获得所有任务的列表,完成一个任务
- C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值
- 百度地图-获取一条公交上的所有站点 获取两站直接的线路
- C# 利用反射,遍历获得一个类的所有属性名,方法名,成员名.
- 如何用命令打包一个站点,包括其所有目录文件
- 输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。
- 经过半年努力,红帆iOffice.net站点获得谷歌提供的网站地图(sitelinks)
- 每天学习一算法系列(6) (输入一个整数和一棵二元树,从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径,打印出和与输入整数相等的所有路径)
- C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值
- 为何cnblogs上所有的站点不能用同一个帐户呢?
- 怎样获得一个HTML标记的所有属性和属性值
- 用函数获得一个类型下所有的数据,并用逗号隔开,显示出来
- 经过半年努力,红帆iOffice.net站点获得谷歌提供的网站地图(sitelinks)
- 获得一个命名空间中所有的类等,并给类属性付值。
- 怎么在获得一个库里面所有的表名?http://topic.csdn.net/t/20020801/09/915234.html
- C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值
- 获得一个网页的所有的URL(WebBrowser)
- 【实现一个网络爬虫】二、如何管理所有的站点