概述
百度地图—-检索功能的使用
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();
步行线路规划:
步行线路规划的方式与驾车线路规划方式类似,在此不再赘述。
最后
以上就是还单身蜗牛为你收集整理的百度地图----检索功能的使用的全部内容,希望文章能够帮你解决百度地图----检索功能的使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复