百度地图---poi地区搜索

2019-07-08 16:10:19 浏览数 (1)

这是目前项目中的第一个需求,就是根据当前页面显示的地址,点击查看按钮,然后就出来一个地图,

东西很简单,就是告诉你一个地址,你把地图显示给我就行了,当前这里面涉及到这个地址是模糊的,也就是这个地址可能在地图上有多个地点

很简单的代码就搞定了:

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里面初始化百度地图的了

0 人点赞