百度地图----检索功能的使用

百度地图—-检索功能的使用

ONE Goal ,ONE Passion !

上面几篇写了如何集成以及使用百度地图和覆盖物.现在就说说百度地图的检索功能;
目前百度地图SDK所集成的检索服务包括:POI检索、公交信息查询、线路规划、地理编码、在线建议查询、短串分享。

PIO检索:
POI(Point of Interest),中文可以翻译为“兴趣点”。在地理信息系统中,一个POI可以是一栋房子、一个商铺、一个邮筒、一个公交站等。

下面将以 周边检索 为例,向大家介绍如何使用检索服务。

 // 第一步:创建POI检索实例 
 poiSearch = PoiSearch.newInstance();

 //第二步:创建检索选项---即检索的一些条件 
                PoiNearbySearchOption nearbySearchOption = new PoiNearbySearchOption();
                // 设置检索中心点
                nearbySearchOption.location(new LatLng(34.7568711, 113.663221));
                //设置检索的关键字---如超市,酒店,药店等
                nearbySearchOption.keyword("超市");
                // 检索半径,单位是米
                nearbySearchOption.radius(1000);
                //检索页数
                nearbySearchOption.pageNum(10);

 //第三步: 发起附近检索请求
                poiSearch.searchNearby(nearbySearchOption);

 //第四步: 设置POI检索监听者; 
                poiSearch.setOnGetPoiSearchResultListener(new OnGetPoiSearchResultListener() {
                 /** * 得到检索结果 * @param poiResult---检索结果 */
                    @Override
                    public void onGetPoiResult(PoiResult poiResult) {

                        final List<PoiInfo> allPoi = poiResult.getAllPoi();

                        System.out.println("检索地址" + allPoi);
                        for (int i = 0; i < allPoi.size(); i++) {

                            System.out.println("检索地址" + allPoi.get(i).address);
                        }


                    }
 /** * 详细信息检索的回调方法 * @param poiDetailResult ---检索结果 * 当检索的是 POI详情信息 时才会回调这个方法 * 如---- * 发起下面检索: // uid是POI检索中获取的POI ID信息 poiSearch .searchPoiDetail((new PoiDetailSearchOption()).poiUid(uid)); 此时结果会出现在poiDetailResult中 */
                    @Override
                    public void onGetPoiDetailResult(PoiDetailResult poiDetailResult) {

                        final LatLng location = poiDetailResult.getLocation();


                        System.out.println("location----" + location);
                    }
                });

            }
        });

公交信息检索:

利用BusLineSearch方法,开发者可查询公交线路的详情信息,实现方式如下:

第一步,发起POI检索,获取相应线路的UID;

//以城市内检索为例,详细方法请参考POI检索部分的相关介绍  
poiSearch.searchInCity((new PoiCitySearchOption())
                        .city("北京")
                        .keyword("717"));

第二步,在POI检索结果中判断该POI类型是否为公交信息;

// 此方法同上是poiSearch设置监听后回调的方法.
 /** * 得到检索结果 * @param poiResult---检索结果 */
                    @Override
public void onGetPoiResult(PoiResult result) {  
    if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {  
        return;  
    }  
    //遍历所有POI,找到类型为公交线路的POI 
    for (PoiInfo poi : result.getAllPoi()) {  
        if (poi.type == PoiInfo.POITYPE.BUS_LINE ||poi.type == PoiInfo.POITYPE.SUBWAY_LINE) {  
            //说明该条POI为公交信息,获取该条POI的UID 
            busLineId = poi.uid;  
            break;  
        }  
    }  
}

第三步,定义并设置公交信息结果监听者(与POI类似),并发起公交详情检索;

//如下代码为发起检索代码,定义监听者和设置监听器的方法与POI中的类似  
mBusLineSearch.searchBusLine((new BusLineSearchOption()  
    .city("北京”")  
    .uid(busLineId)));

线路规划:
下面的用法基本和上面是一样的,就不在一步一步的解释了,直接使用百度官方解释了.

公交线路规划:
实现公交线路规划的方式如下:
第一步,创建公交线路规划检索实例;
mSearch = RoutePlanSearch.newInstance();

第二步,创建公交线路规划检索监听者;

OnGetRoutePlanResultListener listener = new OnGetRoutePlanResultListener() {  
    public void onGetWalkingRouteResult(WalkingRouteResult result) {  
        // 
    }  
    public void onGetTransitRouteResult(TransitRouteResult result) {  
        if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {  
            Toast.makeText(RoutePlanDemo.this, "抱歉,未找到结果", Toast.LENGTH_SHORT).show();  
        }  
        if (result.error == SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR) {  
            //起终点或途经点地址有岐义,通过以下接口获取建议查询信息 
            //result.getSuggestAddrInfo() 
            return;  
        }  
        if (result.error == SearchResult.ERRORNO.NO_ERROR) {  
        //创建路线覆盖物来 显示路线
            TransitRouteOverlay overlay = new MyTransitRouteOverlay(mBaidumap);  
            mBaidumap.setOnMarkerClickListener(overlay);  
            overlay.setData(result.getRouteLines().get(0));  
            overlay.addToMap();  
            overlay.zoomToSpan();  
        }  
    }  
    public void onGetDrivingRouteResult(DrivingRouteResult result) {  
        // 
    }  
};

第三步,设置公交线路规划检索监听者;

mSearch.setOnGetRoutePlanResultListener(listener);

第四步,准备检索起、终点信息;

//创建节点
PlanNode stNode = PlanNode.withCityNameAndPlaceName("北京", "龙泽"); 
PlanNode enNode = PlanNode.withCityNameAndPlaceName("北京", "西单");

第五步,发起公交线路规划检索;

mSearch.transitSearch((new TransitRoutePlanOption())  
    .from(stNode)  
    .city("北京")  
    .to(enNode));

第六步,释放检索实例;

mSearch.destory();

公交线路规划结果的JSON结构图如下:

TransitRouteResult {  //换乘路线结果 
    TaxiInfo: {  //打车信息 
        int totalPrice ;  //总价格 
        String desc;  //打车描述信息 
        int distance;  //距离 
        int duration;  //时间 
        int perKMPrice;  //单价 
        int startPrice;  //起步价 
    }  
    List<TransitRouteLine> : [   //换乘方案 
        {  
        TaxiInfo taxitInfo,   //打车信息 
        VehicleInfo vehicleInfo,   //交通工具信息 
        RouteNode entrance,  //路段入口 
        RouteNode exit,  //路段出口 
        TransitRouteStepType,   //路段类型 
        String instructions,   //路段说明 
        int distance,  //距离 
        int duration  //时间 
        },  
        ……  
    ]  
    SuggestAddrInfo: {   //建议起终点信息 
        List<PoiInfo> suggestStartNode;    //建议起点 
        List<PoiInfo> suggestEndNode;  //建议终点 
        List<List<PoiInfo>> suggestWpNode;   //建议途经点 
        List<CityInfo> suggestStartCity;   //建议起点城市 
        List<CityInfo> suggestEndCity;   //建议终点城市 
        List<List<CityInfo>> suggestWpCity;    //建议途经点城市 
    }  
}

驾车线路规划:

第一步,创建驾车线路规划检索实例;

mSearch = RoutePlanSearch.newInstance();

第二步,创建驾车线路规划检索监听者;

OnGetRoutePlanResultListener listener = new OnGetRoutePlanResultListener() {  
    public void onGetWalkingRouteResult(WalkingRouteResult result) {  
        //获取步行线路规划结果 
    }  
    public void onGetTransitRouteResult(TransitRouteResult result) {  
        //获取公交换乘路径规划结果 
    }  
    public void onGetDrivingRouteResult(DrivingRouteResult result) {  
        //获取驾车线路规划结果 
    }  
};

第三步,设置驾车线路规划检索监听者;

mSearch.setOnGetRoutePlanResultListener(listener);

第四步,准备检索起、终点信息;

PlanNode stNode = PlanNode.withCityNameAndPlaceName("北京", "龙泽"); 
PlanNode enNode = PlanNode.withCityNameAndPlaceName("北京", "西单");

第五步,发起驾车线路规划检索;

mSearch.drivingSearch((new DrivingRoutePlanOption())  
    .from(stNode)  
    .to(enNode));

第六步,释放检索实例;

mSearch.destory();

步行线路规划:
步行线路规划的方式与驾车线路规划方式类似,在此不再赘述。

你可能感兴趣的:(poi,百度地图,地理信息,路线查找)