如图所示,这个界面的效果图是:
其实就是搜索框输入要搜索的内容,然后返回相应的位置信息,然后作为marker标记在地图上就好了,下面详细介绍实现的代码:
搜索的实现代码:
private void search() {
if (TextUtils.isEmpty(serchEt.getText())){
ToastUtils.showToast(context,"请输入要搜索的地址");
return;
}
// mPoiSearch.searchInCity((new PoiCitySearchOption()).city(city).keyword(serchEt.getText().toString()).pageCapacity(50));
mPoiSearch.searchNearby((new PoiNearbySearchOption()).location(position).keyword(serchEt.getText().toString()).radius(20000).pageCapacity(50));
}
OnGetPoiSearchResultListener poiListener = new OnGetPoiSearchResultListener(){
public void onGetPoiResult(PoiResult result){
//获取POI检索结果
poiList = result.getAllPoi();
if (poiList==null){
ToastUtils.showToast("未找到相关地址");
return;
}
Log.e(TAG," result size==>" +poiList.size());
if (poiList!=null && poiList.size()>0) {
//TODO
addMark();
} else {
ToastUtils.showToast("没有搜索到有用的结果");
}
}
@Override
public void onGetPoiDetailResult(PoiDetailResult poiDetailResult) {
}
@Override
public void onGetPoiDetailResult(PoiDetailSearchResult poiDetailSearchResult) {
}
@Override
public void onGetPoiIndoorResult(PoiIndoorResult poiIndoorResult) {
}
};
实现在地图页画点的方法如下:
private void addMark() {
for (int i = 0; i < poiList.size(); i++) {
//定义Maker坐标点
LatLng point = poiList.get(i).getLocation();
//构建Marker图标
BitmapDescriptor bitmap = BitmapDescriptorFactory
.fromResource(R.mipmap.map_shop_ic);
//构建MarkerOption,用于在地图上添加Marker
OverlayOptions option = new MarkerOptions()
.position(point)
.icon(bitmap);
//在地图上添加Marker,并显示
mBaiduMap.addOverlay(option);
//在地图上添加该文字对象并显示
OverlayOptions textOption = new TextOptions()
.bgColor(0xFFFFFFFF)
.fontSize(28)
.fontColor(0xFF828282)
.text(poiList.get(i).getName())
.rotate(0)
.position(point);
mBaiduMap.addOverlay(textOption);
}
}