zoukankan      html  css  js  c++  java
  • 百度地图总结第二篇--POI检索功能

    简单介绍:

    • 眼下百度地图SDK所集成的检索服务包含:POI检索、公交信息查询、线路规划、地理编码、行政区边界数据检索、在线建议查询、短串分享(包含POI搜索结果分享、驾车/公交/骑行/步行路线规划分享、反向地理编码结果分享)。

    • POI(Point of Interest),中文能够翻译为“兴趣点”。在地理信息系统中,一个POI能够是一栋房子、一个商铺、一个邮筒、一个公交站等。
    • 假设还没有集成百度地图,能够看下百度地图总结第一篇环境集成和Hello BaiduMap
      我们来看下怎么使用吧:
      第一步,创建POI检索实例
    mPoiSearch = PoiSearch.newInstance();

    第二步,创建POI检索监听者。

     OnGetPoiSearchResultListener poiListener = new OnGetPoiSearchResultListener(){
                public void onGetPoiResult(PoiResult result){
                    //获取POI检索结果
                    List<PoiInfo> allAddr = result.getAllPoi();
                    for (PoiInfo p: allAddr) {
                        Log.d("MainActivity", "p.name--->" + p.name +"p.phoneNum" + p.phoneNum +" -->p.address:" + p.address + "p.location" + p.location);
                    }
                }
                public void onGetPoiDetailResult(PoiDetailResult result){
                    //获取Place详情页检索结果
                }
            };

    第三步,设置POI检索监听者;

     mPoiSearch.setOnGetPoiSearchResultListener(poiListener);

    第四步。发起检索请求;

    mPoiSearch.searchInCity((new PoiCitySearchOption())
                    .city("北京")
                    .keyword("ktv")
                    .pageNum(10));

    第五步。释放POI检索实例。

    mPoiSearch.destroy()

    这个时候我们看看输出的结果吧。(具体的还请看官方文档介绍,挺具体的)

    我们在来看下公交信息检索:
    第一步,创建POI检索实例:

      mPoiSearch = PoiSearch.newInstance();

    第二步,创建BusLineSearch实例:

    mBusLineSearch = BusLineSearch.newInstance();

    第三步,实现这两个接口:

     mBusLineSearch.setOnGetBusLineSearchResultListener(this);
    
     mPoiSearch.setOnGetPoiSearchResultListener(this);

    第四步,处理实现的方法中的逻辑:

     @Override
        public void onGetBusLineResult(BusLineResult result) {
            if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {
                Toast.makeText(this, "抱歉,未找到结果",
                        Toast.LENGTH_LONG).show();
                return;
            }
            Toast.makeText(this, result.getBusLineName(),
                    Toast.LENGTH_SHORT).show();
            Log.d("MainActivity", result.toString());
            List<BusLineResult.BusStation> steps = result.getStations();
            StringBuffer sb = new StringBuffer();
            for (BusLineResult.BusStation b:steps) {
                sb.append("-->");
                sb.append(b.getTitle());
            }
            Log.d("MainActivity", sb.toString());
        }
    
        @Override
        public void onGetPoiResult(PoiResult result) {
    
            if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {
                Toast.makeText(this, "抱歉。未找到结果",
                        Toast.LENGTH_LONG).show();
                return;
            }
            // 遍历全部poi,找到类型为公交线路的poi
            for (PoiInfo poi : result.getAllPoi()) {
                if (poi.type == PoiInfo.POITYPE.BUS_LINE
                        || poi.type == PoiInfo.POITYPE.SUBWAY_LINE) {
                    //例如以下代码为发起检索代码,定义监听者和设置监听器的方法与POI中的相似
                    mBusLineSearch.searchBusLine((new BusLineSearchOption()
                            //我这里的城市写死了,和我要查的是一样的
                            .city("北京")
                            .uid(poi.uid)));
                }
            }
        }
    
        @Override
        public void onGetPoiDetailResult(PoiDetailResult poiDetailResult) {
    
        }

    第五步:发起检索(我这里相对简单,仅仅是查出来了第一个结果,后期的一个完整的demo会有其它的结果)

     mPoiSearch.searchInCity((new PoiCitySearchOption())
                    .city("北京")
                    .keyword("717"));

    我们来看下检索出来的结果:

    -->菜户营桥东-->大观园-->右安门西-->右安门内-->南樱桃园路口北-->牛街南口-->牛街礼拜寺-->牛街路口西-->广安门内-->广安门北-->天宁寺桥西-->白云观-->公安大学-->木樨地北-->玉渊潭东门-->钓鱼台-->甘家口北-->甘家口大厦-->二里沟西口-->四道口东-->白石桥南-->国家图书馆-->中央民族大学-->魏公村-->中国农业科学院-->人民大学-->海淀黄庄南-->海淀黄庄北-->中关村南-->中关园-->中关园北站-->清华大学西门-->清华附中-->圆明园东门-->北京体育大学-->正白旗-->上地南口-->上地西里-->上地五街-->上地七街-->地铁西二旗站

    这里我们对照一下百度网页中的结果(是一样的哈)

    后面的公交线路规划(后期demo会有写),在线建议查询,线路规划。实现的原理是一样的。大家看下官方文档即可了。

  • 相关阅读:
    康复计划
    Leetcode 08.02 迷路的机器人 缓存加回溯
    Leetcode 38 外观数列
    Leetcode 801 使序列递增的最小交换次数
    Leetcode 1143 最长公共子序列
    Leetcode 11 盛水最多的容器 贪心算法
    Leetcode 1186 删除一次得到子数组最大和
    Leetcode 300 最长上升子序列
    Leetcode95 不同的二叉搜索树II 精致的分治
    Leetcode 1367 二叉树中的列表 DFS
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/8372425.html
Copyright © 2011-2022 走看看