这是目前项目中的第一个需求,就是根据当前页面显示的地址,点击查看按钮,然后就出来一个地图,
东西很简单,就是告诉你一个地址,你把地图显示给我就行了,当前这里面涉及到这个地址是模糊的,也就是这个地址可能在地图上有多个地点
很简单的代码就搞定了:
private BaiduMap mBaiduMap = null;//对应的布局文件中的那个视图控件
private PoiSearch mPoiSearch = null;//根据关键词搜索显示地图 也就是给个关键词
然后是onCreate 函数
setContentView(R.layout.activity_bdmap_poisearch);
//获得上一个activity传递过来的地址参数
address = getIntent().getStringExtra("address");
mPoiSearch = PoiSearch.newInstance();
mPoiSearch.setOnGetPoiSearchResultListener(this);
mBaiduMap = ((SupportMapFragment) (getSupportFragmentManager().findFragmentById(R.id.map))).getBaiduMap();
//直接执行搜索
mPoiSearch.searchInCity((new PoiCitySearchOption())
.city("")
.keyword(address)
.pageNum(load_Index));
重载销毁函数
@Override
protected void onDestroy() {
mPoiSearch.destroy();
super.onDestroy();
}
上面的搜索结果监听事件重载函数
public void onGetPoiResult(PoiResult result) {
if (result == null || result.error == SearchResult.ERRORNO.RESULT_NOT_FOUND) {
Toast.makeText(PoiSearchDemo.this, "未找到结果", Toast.LENGTH_LONG).show();
return;
}
if (result.error == SearchResult.ERRORNO.NO_ERROR) {
mBaiduMap.clear();
PoiOverlay overlay = new MyPoiOverlay(mBaiduMap);
mBaiduMap.setOnMarkerClickListener(overlay);
overlay.setData(result);
overlay.addToMap();
overlay.zoomToSpan();
return;
}
if (result.error == SearchResult.ERRORNO.AMBIGUOUS_KEYWORD) {
// 当输入关键字在本市没有找到,但在其他城市找到时,返回包含该关键字信息的城市列表
String strInfo = "在";
for (CityInfo cityInfo : result.getSuggestCityList()) {
strInfo += cityInfo.city;
strInfo += ",";
}
strInfo += "找到结果";
Toast.makeText(PoiSearchDemo.this, strInfo, Toast.LENGTH_LONG).show();
}
}
public void onGetPoiDetailResult(PoiDetailResult result) {
if (result.error != SearchResult.ERRORNO.NO_ERROR) {
Toast.makeText(PoiSearchDemo.this, "抱歉,未找到结果", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(PoiSearchDemo.this, result.getName() + ": " + result.getAddress(), Toast.LENGTH_SHORT).show();
}
}
上面用到的内部类:
private class MyPoiOverlay extends PoiOverlay {
public MyPoiOverlay(BaiduMap baiduMap) {
super(baiduMap);
}
@Override
public boolean onPoiClick(int index) {
super.onPoiClick(index);
PoiInfo poi = getPoiResult().getAllPoi().get(index);
mPoiSearch.searchPoiDetail((new PoiDetailSearchOption()).poiUid(poi.uid));
return true;
}
}
这个类文件大部分代码是 百度官方给的demo 中有,我只是把onCreate里面不要的都删除了
因为我不需要下一组 不需要开始,我只要调用了这个类就显示地图,所以onCreate里面就那么些东西了,
当前整个代码还需要你在你自己的application里面初始化百度地图的了