基于百度地图android地图SDK开发(3)

显示公交站详情与公交线路详情

1.公交站详情显示
POI搜索后PoiDetailResult的getAddress()的结果为该公交站的全部公交,如下图所示这里写图片描述
想单独把每趟公交提取出来,可以用Java String函数中一个简单的函数string.split()

//本站公交数组
      busnumStr = allbus.split(";");

由于每站公交的数量不同,而且需要点击每一栏查看详情,所以使用ListView来显示本站公交的线路名称。
POI搜索searchNearby中检索到的信息不包含每路公交的详细信息,想要在列出名称的同时显示它的首末班车时间等信息,就要用到searchBusLine了。
searchBusLine是根据uid来检索的,所以首先将保存好的公交数组通过searchInCity检索出它们的uid,并在它的监听者的onGetPoiResult接口中使用searchBusLine。

OnGetPoiSearchResultListener poiListener = new OnGetPoiSearchResultListener() {
            @Override
            public void onGetPoiResult(PoiResult poiResult) {
                if (poiResult == null || poiResult.error != SearchResult.ERRORNO.NO_ERROR) {
                    return;
                }

                //遍历所有POI,找到类型为公交线路的POI
                for (PoiInfo poi : poiResult.getAllPoi()) {

                    if (poi.type == PoiInfo.POITYPE.BUS_LINE) {
                        String busLineId;
                        //说明该条POI为公交信息,获取该条POI的UID
                        busLineId = poi.uid;
                        System.out.println(busLineId);
                        mBusLineSearch.searchBusLine((new BusLineSearchOption()
                                .city("北京")
                                .uid(busLineId)));
                        break;
                    }
                }
            }

            @Override
            public void onGetPoiDetailResult(PoiDetailResult poiDetailResult) {

            }

            @Override
            public void onGetPoiIndoorResult(PoiIndoorResult poiIndoorResult) {

            }
        };

for (int j = 0; j < count; j++) {
            mSearch.searchInCity((new PoiCitySearchOption())
                    .city("北京")
                    .keyword(busnumStr[j]));
        }

在searchBusLine的监听者中使用list将搜索结果逐条保存下来。

OnGetBusLineSearchResultListener busLineListener = new OnGetBusLineSearchResultListener() {

            @Override
            public void onGetBusLineResult(BusLineResult busLineResult) {
                list.add(busLineResult);
                adapter.notifyDataSetChanged();
            }
        };

利用适配器内部类将ListView内容显示出来,如图。
这里写图片描述
2.公交线路详情显示

点击某一栏ListView,将之前查询到的公交线路详情的结果传给一个新的activity,其中的公交的站点也是用list保存的,方法与之前类似,显示结果如图。
这里写图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值