百度地图api公交线路查询功能(安卓学习笔记)

一预备工作
1首先你得是百度开发者,开发者的申请过程很简单,直接去戳http://developer.baidu.com/map/地图官网,登陆,就会有让你申请的过程了。
2申请需要两三天的时间。通过之后,http://lbsyun.baidu.com/apiconsole/key创建key。创建key的过程官网下面都有。包括怎样获取sha1等。
3在开发页面里,选择安卓平台,android sdk 3.0,左边有相关下载,全部下载,会让你选择下载包含什么功能的。根据需要来就行。这里,除了默认的再加上定位功能。
顺便示例代码也下载一份。
4.先在androidManifest.xml文件里设置key。参考官网的介绍。
5.跑demo试试(demo就是演示的缩写。示例代码)
二写自己的程序
获取某城市某条公交线路的公交线路,并文字输出在屏幕上
1需要两部分的搜索:POI和Busline
poi是来获取在这个城市的关键字为这个公交线路号的所有信息。并且可以在结果中筛选出公交线路的结果(此时的结果仅仅是一个uid类似特征码的东西)。
buslinesearch则是从专门的公交线路库里面获取该线路的所有数据
2.代码实现

这里仅给出关键代码,在最后附上一些需要注意的问题。
MainActivity里面的:

// 搜索相关
    private PoiSearch mSearch = null; // 搜索模块,也可去掉地图模块独立使用
    private BusLineSearch mBusLineSearch = null;
    private BusLineResult route = null;// 保存驾车/步行路线数据的变量,供浏览节点时使用
    private List<String> busLineIDList = null;//保存线路,可能有多条
    TextView text = null;

 
在oncreate方法里初始化数据

//公交线路搜索相关
        mSearch = PoiSearch.newInstance();
        mSearch.setOnGetPoiSearchResultListener(this);
        mBusLineSearch = BusLineSearch.newInstance();
        mBusLineSearch.setOnGetBusLineSearchResultListener(this);
        busLineIDList = new ArrayList<String>();
        text = (TextView) findViewById(R.id.textView1);

 
重写获取到busline的方法

@Override
    public void onGetBusLineResult(BusLineResult result) {
        // TODO Auto-generated method stub
        if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {
            System.out.println("no result");
            return;
        }
        route = result;
        List<BusLineResult.BusStation> st = route.getStations();
        for (Iterator<BusLineResult.BusStation> i = st.iterator(); i.hasNext();) {
            // System.out.println("station"+i.next().getTitle());
//可以直接测试输出结果
//          text.append("station" + i.next().getTitle());
//这里的text是一个textview,用来测试用的
            busStations.add(i.next().getTitle());
        }
    }

重写获取到poi信息的方法

@Override
    public void onGetPoiResult(PoiResult result) {
        if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {
            System.out.println("no result");
            return;
        }
        // 遍历所有poi,找到类型为公交线路的poi
        busLineIDList.clear();
        for (PoiInfo poi : result.getAllPoi()) {
            if (poi.type == PoiInfo.POITYPE.BUS_LINE
                    || poi.type == PoiInfo.POITYPE.SUBWAY_LINE) {
                busLineIDList.add(poi.uid);
            }
        }
        mBusLineSearch.searchBusLine(new BusLineSearchOption().city("济南").uid(
                busLineIDList.get(0)));
//直接用获取到的第一条线路。因为前面信息很清楚。我要获取济南的119线路。

    }

在oncreat方法里写这么一句就能在启动界面的时候就查询了

mSearch.searchInCity(new PoiCitySearchOption().city("济南")
                .keyword("119"));

ok简单的公交线路查询就实现了。至于那个 busLineIDList是为了单击按钮,弹出一个listview来显示所有公交线路用的。可以结合这篇文章来看   listview

文章版权归 FindHao 所有丨本站默认采用CC-BY-NC-SA 4.0协议进行授权|
转载必须包含本声明,并以超链接形式注明作者 FindHao 和本文原始地址:
https://www.findhao.net/easycoding/565

你可能喜欢:(相似内容推荐和广告都使用了谷歌的推荐系统,需要对本站取消广告屏蔽才能显示。感谢点击↓广告支持博主~)

Find

新浪微博(FindSpace博客)QQ群:不安分的Coder(375670127) 不安分的Coder

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*