地图位置搜索
来源:互联网 发布:spring mybatis打印sql 编辑:程序博客网 时间:2024/06/06 00:07
Ø 知识点:ArrayList/arrayAdapter、输入提示、搜索
Ø 实现详情:
1. 利用控件AutoCompleteTextView,作为适配器,放置输入提示列表,并在其中text内容发生改变时,监听返回输入建议
2. 搜索功能:点击“搜索”按钮,实现搜索功能,监听搜索结果返回,发送请求进行搜索,在点击时要记得清除定位
/** 搜索:poi搜索功能 */ setUpSearch();
private void setUpSearch() { search = (Button) findViewById(R.id.search); search.setOnClickListener(this); editList = (AutoCompleteTextView) findViewById(R.id.searchLocation); editList.addTextChangedListener(this); aMap.setOnMarkerClickListener(this);// 添加点击marker监听事件 aMap.setInfoWindowAdapter(this);// 添加显示infowindow监听事件}
/** * 开始进行poi搜索 */private void search() { keyWord=editList.getText().toString().trim(); if (keyWord != null) { int currentPage = 0; query = new PoiSearch.Query(keyWord, "", ""); // keyWord表示搜索字符串,第二个参数表示POI搜索类型,默认为:生活服务、餐饮服务、商务住宅 // cityCode表示POI搜索区域,(这里可以传空字符串,空字符串代表全国在全国范围内进行搜索) query.setPageSize(10);// 设置每页最多返回多少条poiitem query.setPageNum(currentPage);// 设置查第一页 poiSearch = new PoiSearch(this, query); // poiSearch.setBound(new PoiSearch.SearchBound(new LatLonPoint(latitude, longitude), 6000));//设置搜索中心点及范围 poiSearch.setOnPoiSearchListener(this);// 设置数据返回的监听器 poiSearch.searchPOIAsyn();//调用 PoiSearch 的searchPOIAsyn() 方法发送请求,开始搜索 }else{ Toast.makeText(MainActivity.this, "输入为空!", Toast.LENGTH_LONG).show(); }}
@Overridepublic void beforeTextChanged(CharSequence s, int start, int count, int after) {}@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) { keyWord = s.toString().trim(); if (keyWord != null) { InputtipsQuery inputquery = new InputtipsQuery(keyWord, ""); Inputtips inputTips = new Inputtips(MainActivity.this, inputquery); inputTips.setInputtipsListener(this); inputTips.requestInputtipsAsyn();//调用PoiSearch的requestInputtipsAsyn()方法发送请求 }else { Toast.makeText(MainActivity.this, "输入为空!", Toast.LENGTH_LONG).show(); }}@Overridepublic void afterTextChanged(Editable s) {}
@Overridepublic void onGetInputtips(List<Tip> tipList, int rCode) {//输入提示回调 if (rCode == 1000) {// 正确返回 List<String> listString = new ArrayList<String>(); for (int i = 0; i < tipList.size(); i++) { listString.add(tipList.get(i).getName()); } ArrayAdapter<String> aAdapter = new ArrayAdapter<String>(getApplicationContext(), R.layout.input, listString); editList.setAdapter(aAdapter); aAdapter.notifyDataSetChanged(); } else { Log.e("MainActivity", " ErrCode:" + rCode); }}@Overridepublic void onPoiItemSearched(PoiItem poiItem, int errorCode) {}@Overridepublic void onPoiSearched(PoiResult result, int rCode) { if (rCode ==1000) { if (result != null && result.getQuery() != null) {// 搜索poi的结果 if (result.getQuery().equals(query)) {// 是否是同一条 poiResult = result; poiItems = poiResult.getPois();// 取得第一页的poiitem数据,页数从数字0开始 List<SuggestionCity> suggestionCities = poiResult .getSearchSuggestionCitys();// 当搜索不到poiitem数据时,会返回含有搜索关键字的城市信息 if (poiItems != null && poiItems.size() > 0) { aMap.clear();// 清理之前的图标 PoiOverlay poiOverlay = new PoiOverlay(aMap, poiItems); poiOverlay.removeFromMap(); poiOverlay.addToMap(); poiOverlay.zoomToSpan(); } else if (suggestionCities != null && suggestionCities.size() > 0) { showSuggestCity(suggestionCities); } else { Toast.makeText(MainActivity.this,"没有可显示的结果",Toast.LENGTH_SHORT).show(); } } } else { Toast.makeText(MainActivity.this,"没有可显示的结果",Toast.LENGTH_SHORT).show(); } } else if (rCode == 27) { Toast.makeText(MainActivity.this,"网络错误",Toast.LENGTH_SHORT).show(); } else if (rCode == 32) { Toast.makeText(MainActivity.this,"错误的Key值",Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity.this,"其他的错误",Toast.LENGTH_SHORT).show(); }}/** * poi没有搜索到数据,返回一些推荐城市的信息 */private void showSuggestCity(List<SuggestionCity> cities) { String infomation = "推荐城市\n"; for (int i = 0; i < cities.size(); i++) { infomation += "城市名称:" + cities.get(i).getCityName() + "城市区号:" + cities.get(i).getCityCode() + "城市编码:" + cities.get(i).getAdCode() + "\n"; } Toast.makeText(MainActivity.this,infomation,Toast.LENGTH_SHORT).show();}
@Overridepublic boolean onMarkerClick(Marker marker) { marker.showInfoWindow(); return false;}
@Overridepublic View getInfoWindow(Marker marker) { return null;}@Overridepublic View getInfoContents(Marker marker) { return null;}
1 0
- 地图位置搜索
- 腾讯地图可搜索定点位置
- iOS 使用腾讯地图SDK,搜索附近位置
- JavaScript地图手动输入起始与终点位置搜索
- 高德地图,仿微信周边位置poi搜索
- Android 百度地图(二)——地图切换、定位、添加覆盖物、搜索位置、连线
- android百度地图开发之自动定位所在位置与固定位置进行驾车,步行,公交路线搜索
- Android高仿百度地图公交与位置建议搜索(四)
- [android] 百度地图开发 (二).定位城市位置和城市POI搜索
- android百度地图开发之自动定位所在位置与固定位置进行驾车,步行,公交路线搜索
- 利用高德地图关键字检索POI-实现仿微信发朋友圈搜索附近位置
- 百度地图 根据关键字搜索 并返回信息列表并根据选择位置信息得到经纬度
- 高德地图 Javascript web API 1.3根据输入的地址搜索位置的经纬度编码
- vue2集成amap(高德地图)位置搜索和定位
- 简单打开百度地图APP的方法,并可以直接检索出搜索的位置
- 百度地图标注位置
- iOS地图位置开发
- iOS 地图位置开发
- Linux查看cpu-物理个数和逻辑个数
- android studio 常用快捷键
- Qt 之 WAV文件解析
- 贪心算法-背包问题
- 2016.11.4日-第六届Oracle技术嘉年华与你相约北京
- 地图位置搜索
- Dirb Dir Bruteforce
- android极光推送
- phpMyAdmin配置文件现在需要一个短语密码的解决方法
- JS经典算法之冒泡排序算法
- 单元测试1-为什么需要单元测试
- Android手机屏幕适配知识整理
- 如何监测谁用了SQL Server的Tempdb空间?
- 签名认证算法Digest