android 百度地图 在线建议查询
2015-12-07 16:53
495 查看
官方demo中,在线建议查询的activity叫PoiSearchDemo。
用的是AutoCompleteTextView 这个控件,我觉得不怎么好,用的listview。体验会比AutoCompleteTextView好很多。
架构可能有略微差别 initComponents() 可以当作是onCreate。
用的是AutoCompleteTextView 这个控件,我觉得不怎么好,用的listview。体验会比AutoCompleteTextView好很多。
架构可能有略微差别 initComponents() 可以当作是onCreate。
package com.zshzkp.wolaiyun.ui; import java.util.List; import android.content.Intent; import android.text.Editable; import android.text.TextWatcher; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.Toast; import com.baidu.mapapi.map.BaiduMap; import com.baidu.mapapi.search.core.CityInfo; import com.baidu.mapapi.search.core.PoiInfo; import com.baidu.mapapi.search.core.SearchResult; import com.baidu.mapapi.search.geocode.GeoCoder; import com.baidu.mapapi.search.poi.OnGetPoiSearchResultListener; import com.baidu.mapapi.search.poi.PoiDetailResult; import com.baidu.mapapi.search.poi.PoiDetailSearchOption; import com.baidu.mapapi.search.poi.PoiResult; import com.baidu.mapapi.search.poi.PoiSearch; import com.baidu.mapapi.search.sug.OnGetSuggestionResultListener; import com.baidu.mapapi.search.sug.SuggestionResult; import com.baidu.mapapi.search.sug.SuggestionSearch; import com.baidu.mapapi.search.sug.SuggestionSearchOption; import com.zshzkp.wolaiyun.R; import com.zshzkp.wolaiyun.base.BaseActivity; import com.zshzkp.wolaiyun.model.AdapterBean; import com.zshzkp.wolaiyun.util.PoiOverlay; public class ChooseAddrActivity extends BaseActivity implements OnGetPoiSearchResultListener, OnGetSuggestionResultListener { // private MessageAdapter sugAdapter = null; private ListView listView; private int load_Index = 0; private List<AdapterBean> list; private EditText keyWorldsView; private PoiSearch mPoiSearch = null; private SuggestionSearch mSuggestionSearch = null; private BaiduMap mBaiduMap = null; private ArrayAdapter<String> sugAdapter1 = null; GeoCoder mSearch = null; // 搜索模块,也可去掉地图模块独立使用 @Override public int getContentViewId() { // TODO Auto-generated method stub return R.layout.activity_choose_addr; } @Override public int getTitleBarId() { // TODO Auto-generated method stub return -1; } @Override protected String getActivityTitleTxt() { // TODO Auto-generated method stub return "选择地址"; } @Override public void initComponents() { setTitleBarAction(); keyWorldsView=(EditText) findViewById(R.id.CHOOSE_AutoCompleteTextView); listView=(ListView) findViewById(R.id.chooseaddr_listview_1); // 初始化搜索模块,注册搜索事件监听 mPoiSearch = PoiSearch.newInstance(); mPoiSearch.setOnGetPoiSearchResultListener(this); mSuggestionSearch = SuggestionSearch.newInstance(); mSuggestionSearch.setOnGetSuggestionResultListener(this); sugAdapter1 = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line); // sugAdapter = new MessageAdapter(this, list); listView.setAdapter(sugAdapter1); /** * 当输入关键字变化时,动态更新建议列表 */ keyWorldsView.addTextChangedListener(new TextWatcher() { @Override public void afterTextChanged(Editable arg0) { } @Override public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { } @Override public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) { /** * 使用建议搜索服务获取建议列表,结果在onSuggestionResult()中更新 */ mSuggestionSearch .requestSuggestion((new SuggestionSearchOption()) .keyword(cs.toString()).city("上海")); listView.setAdapter(sugAdapter1); } }); listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { // TODO Auto-generated method stub String string= sugAdapter1.getItem(position); keyWorldsView.setText(string); } }); Button button =(Button) findViewById(R.id.AutoCompleteTextView_button); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { String string=keyWorldsView.getText().toString(); Intent intent =new Intent(); intent.putExtra("Key", string); setResult(10000, intent); finish(); } }); } @Override public void loadData() { // TODO Auto-generated method stub } @Override public boolean isResumeLoad() { // TODO Auto-generated method stub return false; } public void goToNextPage(View v) { load_Index++; } public void onGetPoiResult(PoiResult result) { if (result == null || result.error == SearchResult.ERRORNO.RESULT_NOT_FOUND) { Toast.makeText(ChooseAddrActivity.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); for (int i = 0; i < result.getAllPoi().size(); i++) { Log.e("TAG", ""+result.getAllPoi().get(i).location.longitude); } overlay.addToMap(); overlay.zoomToSpan(); return; } if (result.error == SearchResult.ERRORNO.NO_ERROR) { mBaiduMap.clear(); PoiOverlay overlay = new MyPoiOverlay(mBaiduMap); mBaiduMap.setOnMarkerClickListener(overlay); overlay.setData(result); for (int i = 0; i < result.getAllPoi().size(); i++) { Log.e("TAG", ""+result.getAllPoi().get(i).location.longitude); } 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(ChooseAddrActivity.this, strInfo, Toast.LENGTH_LONG) .show(); } } public void onGetPoiDetailResult(PoiDetailResult result) { if (result.error != SearchResult.ERRORNO.NO_ERROR) { Toast.makeText(ChooseAddrActivity.this, "抱歉,未找到结果", Toast.LENGTH_SHORT) .show(); } else { Toast.makeText(ChooseAddrActivity.this, result.getName() + ": " + result.getAddress(), Toast.LENGTH_SHORT) .show(); } } @Override public void onGetSuggestionResult(SuggestionResult res) { if (res == null || res.getAllSuggestions() == null) { return; } sugAdapter1.clear(); for (SuggestionResult.SuggestionInfo info : res.getAllSuggestions()) { if (info.key != null) sugAdapter1.add(info.key); // Log.e("TAGGG", ""+info.pt.latitude); } sugAdapter1.notifyDataSetChanged(); } 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); // if (poi.hasCaterDetails) { mPoiSearch.searchPoiDetail((new PoiDetailSearchOption()) .poiUid(poi.uid)); // } return true; } } }
相关文章推荐
- Android蓝牙4.0读写数据返回状态码及出现异常解决办法
- Android中的MVP模式使用
- Android开发中适配多种 ROM 的快捷方式是如何实现的?
- android studio 重启adb
- Android Studio(as)调试总结
- android上传文件到服务器
- android获取控件宽高
- Jenkins构建Android项目持续集成之简介篇
- Android抽象布局——include、merge 、ViewStub
- android动画及用法
- android学习笔记10(2)——多个Activity跳转和传值
- Android控件之GridView自定义
- android(37)(绑定远程服务)
- Android通信汇总
- Android L/5.0 数据连接设计更改
- 读Android群英传第四章
- Android 基础:SQLiteOpenHelper(SQLite的CURD)
- Android编程入门之HelloWorld项目目录结构分析
- Android 三种sendBroadCast的方式对比
- Android学习之保存用户登录信息