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

概述

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

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();

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

最后

以上就是还单身蜗牛为你收集整理的百度地图----检索功能的使用的全部内容,希望文章能够帮你解决百度地图----检索功能的使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部