我是靠谱客的博主 还单身蜗牛,这篇文章主要介绍百度地图----检索功能的使用,现在分享给大家,希望可以做个参考。

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

ONE Goal ,ONE Passion !

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

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

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

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// 第一步:创建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;

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

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

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 此方法同上是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类似),并发起公交详情检索;

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

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

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

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

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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) { // } };

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

复制代码
1
mSearch.setOnGetRoutePlanResultListener(listener);

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

复制代码
1
2
3
4
//创建节点 PlanNode stNode = PlanNode.withCityNameAndPlaceName("北京", "龙泽"); PlanNode enNode = PlanNode.withCityNameAndPlaceName("北京", "西单");

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

复制代码
1
2
3
4
mSearch.transitSearch((new TransitRoutePlanOption()) .from(stNode) .city("北京") .to(enNode));

第六步,释放检索实例;

复制代码
1
mSearch.destory();

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

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
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; //建议途经点城市 } }

驾车线路规划:

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

复制代码
1
mSearch = RoutePlanSearch.newInstance();

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

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
OnGetRoutePlanResultListener listener = new OnGetRoutePlanResultListener() { public void onGetWalkingRouteResult(WalkingRouteResult result) { //获取步行线路规划结果 } public void onGetTransitRouteResult(TransitRouteResult result) { //获取公交换乘路径规划结果 } public void onGetDrivingRouteResult(DrivingRouteResult result) { //获取驾车线路规划结果 } };

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

复制代码
1
mSearch.setOnGetRoutePlanResultListener(listener);

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

复制代码
1
2
3
PlanNode stNode = PlanNode.withCityNameAndPlaceName("北京", "龙泽"); PlanNode enNode = PlanNode.withCityNameAndPlaceName("北京", "西单");

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

复制代码
1
2
3
mSearch.drivingSearch((new DrivingRoutePlanOption()) .from(stNode) .to(enNode));

第六步,释放检索实例;

复制代码
1
mSearch.destory();

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

最后

以上就是还单身蜗牛最近收集整理的关于百度地图----检索功能的使用的全部内容,更多相关百度地图----检索功能内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部