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

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

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


很简单的代码就搞定了:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值