转载请注明作者。
注:本人在找工作,地点在北京。
百度地图SDK开发(三)检索功能
目前百度地图SDK所集成的检索服务包括:POI检索、公交信息查询、线路规划、地理编码、行政区边界数据检索、在线建议查询、短串分享(包括POI搜索结果分享、驾车/公交/骑行/步行路线规划分享、反向地理编码结果分享)。 本文将简单的介绍下POI检索,路线查询,地理编码。
POI检索
POI(Point of Interest),中文可以翻译为“兴趣点”。在地理信息系统中,一个POI可以是一栋房子、一个商铺、一个邮筒、一个公交站等。
百度地图SDK提供三种类型的POI检索:周边检索、区域检索和城市内检索。
接下来就是代码时刻,通过不同的代码来展示下三种不同的搜索,其实也就是范围不同,其他的都差不多。还记得上一篇中说过的百度地图中的基本模式吗?创建对象, 创建监听器,设置参数发起请求。在检索的时候也是这个套路。
@Override
public void onClick(View v) {
if(TextUtils.isEmpty(ed_constent.getText().toString())){
return ;
}
//创建搜索对象
PoiSearch search= PoiSearch.newInstance();
//创建监听器
search.setOnGetPoiSearchResultListener(new OnGetPoiSearchResultListener() {
@Override
public void onGetPoiResult(PoiResult poiResult) {
//普通检索
if (poiResult == null || poiResult.error != SearchResult.ERRORNO.NO_ERROR) {
Toast.makeText(MainActivity.this, "没有搜索内容", Toast.LENGTH_SHORT).show();
return;
}
List<PoiInfo> allPoi = poiResult.getAllPoi();
for (PoiInfo info : allPoi) {
MarkerOptions overlay = new MarkerOptions();
overlay.icon(BitmapDescriptorFactory.fromResource(R.drawable.icon_locate));
overlay.position(info.location);
Marker marker = (Marker)baiduMap.addOverlay(overlay);
Log.d("tag", "info: " + info.toString());
Bundle bundle = new Bundle();
bundle.putString("arr", info.address);
bundle.putString("phone", info.phoneNum);
bundle.putString("name", info.name);
marker.setExtraInfo(bundle);
}
}
@Override
public void onGetPoiDetailResult(PoiDetailResult poiDetailResult) {
//深度检索
}
});
//设置检索参数,发起检索
PoiNearbySearchOption option=new PoiNearbySearchOption()
.keyword(ed_constent.getText().toString())
.location(mylocation)
.radius(30000);
search.searchNearby(option);
}
上面的代码完全就是按照之前的逻辑去写的,创建对象