前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >百度地图---poi地区搜索

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

作者头像
wust小吴
发布2019-07-08 16:10:19
7440
发布2019-07-08 16:10:19
举报
文章被收录于专栏:风吹杨柳风吹杨柳风吹杨柳

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

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

很简单的代码就搞定了:

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015年10月05日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档