这是目前项目中的第一个需求,就是根据当前页面显示的地址,点击查看按钮,然后就出来一个地图,
东西很简单,就是告诉你一个地址,你把地图显示给我就行了,当前这里面涉及到这个地址是模糊的,也就是这个地址可能在地图上有多个地点
很简单的代码就搞定了:
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里面初始化百度地图的了