深入学习百度地图Android(安卓)SDK v4.0.0【第九关】检索功能
16lz
2021-01-26
检索其实就是查询,比如你要找一个地方的美食,就可以通过输入城市和美食的关键字来查询!这一功能官方介绍的很多,我们主要看看检索城市的美食,并通过UID去检索美食详情信息!
package cq.cake.chwl.ui;import android.app.AlertDialog;import android.content.DialogInterface;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.widget.EditText;import com.baidu.mapapi.search.core.PoiInfo;import com.baidu.mapapi.search.core.SearchResult;import com.baidu.mapapi.search.poi.OnGetPoiSearchResultListener;import com.baidu.mapapi.search.poi.PoiCitySearchOption;import com.baidu.mapapi.search.poi.PoiDetailResult;import com.baidu.mapapi.search.poi.PoiDetailSearchOption;import com.baidu.mapapi.search.poi.PoiIndoorResult;import com.baidu.mapapi.search.poi.PoiResult;import com.baidu.mapapi.search.poi.PoiSearch;import java.util.List;import butterknife.BindView;import butterknife.ButterKnife;import cq.cake.adapter.POIUidAdapter;import cq.cake.base.BaseToolbarMapActivity;import cq.cake.chwl.R;import cq.cake.util.L;import cq.cake.util.T;/** * POI检索功能 * 自v3.6.1开始,城市poi检索返回结果,新增门址类列表数据: * PoiSearch类的searchInCity(PoiCitySearchOption) 发起检索时返回的结果,增加门址类数据: * PoiResult中新增getAllAddr()获取门址类列表,当isHasAddrInfo() 返回true时,除了原poi列表外,还包含门址结果 * 例如:在“北京”搜索“上地十街1号”,除返回包含“上地十街1号”的poi列表以外,还包括地址为“上地十街1号”的明确门址。 */public class PoiSearchActivity extends BaseToolbarMapActivity { PoiSearch mPoiSearch; @BindView(R.id.searchview) EditText searchview; @BindView(R.id.searchview2) EditText searchview2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_poi_search); ButterKnife.bind(this); initPOI(); } private void initPOI() { //1.创建检索实例 mPoiSearch = PoiSearch.newInstance(); //2.创建监听者,官网只有前两个方法,但到了4.0是有室内地图的检索结果的 OnGetPoiSearchResultListener poiListener = new OnGetPoiSearchResultListener() { @Override public void onGetPoiResult(PoiResult result) { //获取POI检索结果 L.i("检索结果总数=" + result.getTotalPoiNum() + " Poi检索结果数:" + result.getAllPoi().size()); final List allPoi = result.getAllPoi(); POIUidAdapter adapter = new POIUidAdapter(PoiSearchActivity.this, allPoi); new AlertDialog.Builder(PoiSearchActivity.this).setAdapter(adapter, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { PoiInfo poi = allPoi.get(which); //更具得到的uid,来检索详情信息 mPoiSearch.searchPoiDetail((new PoiDetailSearchOption()).poiUid(poi.uid)); } }).show(); } @Override public void onGetPoiDetailResult(PoiDetailResult result) { //获取Place详情页检索结果 if (result.error != SearchResult.ERRORNO.NO_ERROR) { //详情检索失败 T.showLong(PoiSearchActivity.this, "详情检索失败"); } else { StringBuffer buffer = new StringBuffer("名称:" + result.getName() + "\n"); buffer.append("地址:").append(result.getAddress()).append("\n") .append("签到数量:").append(result.getCheckinNum()).append("\n") .append("评论数量:").append(result.getCommentNum()).append("\n") .append("详情 url:").append(result.getDetailUrl()).append("\n") .append("环境评价:").append(result.getEnvironmentRating()).append("\n") .append("设施评价:").append(result.getFacilityRating()).append("\n") .append("喜欢数量:").append(result.getFavoriteNum()).append("\n") .append("团购数量:").append(result.getGrouponNum()).append("\n") .append("卫生评价:").append(result.getHygieneRating()).append("\n") .append("营业时间:").append(result.getShopHours()).append("\n") .append("poi 标签:").append(result.getTag()).append("\n") .append("电话号码:").append(result.getTelephone()).append("\n") .append("poi 类型:").append(result.getType()).append("\n") .append("poi的uid:").append(result.getUid()).append("\n"); //检索成功 new AlertDialog.Builder(PoiSearchActivity.this).setTitle("检索详情").setMessage(buffer.toString()).setPositiveButton("确定", null).show(); } } @Override public void onGetPoiIndoorResult(PoiIndoorResult poiIndoorResult) { //获取室内详情页检索结果 } }; //3.设置监听者 mPoiSearch.setOnGetPoiSearchResultListener(poiListener); } @Override protected void onDestroy() { super.onDestroy(); //5.释放POI检索实例 mPoiSearch.destroy(); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_poi_search, menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { int itemId = item.getItemId(); switch (itemId) { case R.id.menu1: //4.发起检索请求 mPoiSearch.searchInCity((new PoiCitySearchOption()) .city(searchview.getText().toString()) .keyword(searchview2.getText().toString()) .pageNum(10)); break; } return super.onOptionsItemSelected(item); }}
更多相关文章
- andorid中网络图片下载、保存以及在相册中显示
- Android(安卓)Studio利用BuildConfig获取版本名和版本号
- Android获取本机ip地址和Mac地址
- android 通过Intent打开相册并获取选择的图片
- Android腾讯微薄客户端开发九:博主详情界面篇(广播,听众,收听)
- Android-- ArrayAdapter用法举例
- 一起学android之如何获取网络类型并判断是否可用(20)
- 获取手机屏幕大小
- android wifi 点对点传输