基于指定文本的百度地图poi城市检索的使用(思路最重要)

(转载请注明出处哦)具体的百度地图权限和apikey配置以及基础地图的配置不叙述,百度地图定位可以看这个链接的http://blog.csdn.net/heweigzf/article/details/51084358,先来看一波搜索需要的基本布局layout

<AutoCompleteTextView
        	android:id="@+id/autosearchresult"
        	android:background="@null"
        	android:hint="@string/please_input_addr"
        	android:layout_width="match_parent"
       	     android:layout_height="@dimen/y30"
        	android:completionThreshold="2"
		android:background="@drawable/edittext_shap"
        	android:singleLine="true"/>
<ListView
        android:id="@+id/poimsglist"
        android:divider="@color/grey"
        android:dividerHeight="1px"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

AutoCompleteTextView可以换成EditTextView,都是可以的,既然是城市poi检索,就会有需要的城市名,可以是定位得到的也可以是传值过来的,这里我就以Intent传值的形式了,先初始化城市检索核心类

/**
     * 城市内搜索
     */
    private void citySearch(int page,String keyword,int pageCapacity) {
    	Intent intent=getIntent();
    	if(intent!=null){
    		String city=intent.getStringExtra("city");
    		if(city!=null){
    		   mPoiSearch=PoiSearch.newInstance();
    		   mPoiSearch.setOnGetPoiSearchResultListener(this); // 监听检索结果回调
    	        // 设置检索参数
    	        PoiCitySearchOption citySearchOption = new PoiCitySearchOption();
    	        citySearchOption.city(city);// 城市
    	        citySearchOption.keyword(keyword);// 关键字
    	        citySearchOption.pageCapacity(pageCapacity);// 默认每页10条
    	        citySearchOption.pageNum(page);// 分页编号
    	        // 发起检索请求
    	        mPoiSearch.searchInCity(citySearchOption);
    		}
    	}
}

接下来就是运用以上的方法了,可以明显的看出来我们是通过输入框来自动检索,需要的给AutoCompleteTextView设置输入监听

autosearchresult.addTextChangedListener(this);

@Override
	public void beforeTextChanged(CharSequence s, int start, int count,
			int after) {
	}

	@Override
	public void onTextChanged(CharSequence s, int start, int before, int count) {
	}

	// 输入完成后自动进行检索调用以上citySearch方法
	@Override
	public void afterTextChanged(Editable s) {
		String searchdialog=s.toString();
		if(searchdialog.length()>1){
			citySearch(0, searchdialog, 20);
		}
	}

检索成功后,以下为OnGetPoiSearchResultListener回调的检索结果,getAllPoi()包含所有的检索结果

private ArrayList<String> addrs=new ArrayList<String>();
private ArrayList<String> names=new ArrayList<String>();
private ArrayList<LatLng> mlLatLngs=new ArrayList<LatLng>();

@Override
	public void onGetPoiDetailResult(PoiDetailResult arg0) {
		//获取Place详情页检索结果
	}

	@Override
	public void onGetPoiResult(PoiResult arg0) {
		//获取POI检索结果
		if(arg0.error!=SearchResult.ERRORNO.NO_ERROR){
			//BaseApp.getInstance().showToast("检索fail");
		}else {
			if(addrs!=null){
				addrs.clear();
			}
			if(mlLatLngs!=null){
				mlLatLngs.clear();
			}
			if(names!=null){
				names.clear();
			}
			if(arg0.getAllPoi()!=null&&arg0.getAllPoi().size()>0){
				List<PoiInfo> mPoiInfos=arg0.getAllPoi();
				for (int i = 0; i < mPoiInfos.size(); i++) {
					names.add(mPoiInfos.get(i).name);
					addrs.add(mPoiInfos.get(i).address);
					mlLatLngs.add(mPoiInfos.get(i).location);
				//对需要的信息设置适配器,如果想在其他界面用,可以自己创建回调接口
mSearchListAdapter=new SearchListAdapter(addrs, names, BaseApp.getInstance());
					poiresultlist.setAdapter(mSearchListAdapter);
				}
			}
		}
	}

最后很重要的一步,要记得销毁poisearch对象,避免可能会报空指针异常

@Override
	public void onBackPressed() {
		super.onBackPressed();
		if(mPoiSearch!=null){
			mPoiSearch.destroy();
		}
	}

	@Override
	public void onDestroy() {
		super.onDestroy();
		if(mPoiSearch!=null){
			mPoiSearch.destroy();
		}
	}

觉得好的可以收藏哦,觉得有问题的可以提出来哦

时间: 2024-10-10 15:13:11

基于指定文本的百度地图poi城市检索的使用(思路最重要)的相关文章

iOS百度地图poi检索(基于百度地图2.3.0SDK开发)

正好做到百度地图的poi检索,拿来分享一下,基于百度地图2.3.0SDK开发,说实话,这个新版本poi真不好用 先来看头文件里面,定义poi对象,当然你也可以写到实现文件里面 #import <UIKit/UIKit.h> #import "BMapKit.h" @interface NearByPlaceViewController : ViewControllerBase <BMKPoiSearchDelegate> {     BMKPoiSearch *

iOS地图集成示例:百度地图POI检索

一.集成百度地图(傻瓜教程,以网站说明文档为准,此处罗列几项主要步骤) 1.登录  http://lbsyun.baidu.com  百度地图开发者平台,获取SDK和集成文档. 2.百度地图可以提供的一些服务 (1)地图:提供地图展示和地图操作功能: (2)POI检索:支持周边检索.区域检索和城市内兴趣点检索: (3)地理编码:提供经纬度和地址信息相互转化的功能接口: (4)线路规划:支持公交.驾车.步行.骑行,四种方式的线路规划: (5)覆盖物图层:支持在地图上添加覆盖物(标注.几何图形.热力

教你如何拔取百度地图POI兴趣点

教你如何拔取百度地图POI兴趣点 通过聚合数据提供的接口,获取百度地图的POI兴趣点,并存储至数据库中. 实现: 1.聚合数据百度POI接口说明 调用聚合数据,首先得注册聚合.聚合数据提供的百度地图POI的接口有三个:数据分类,查询数据和获取周边数据.想要获取百度POI兴趣点,涉及到的接口为数据分类,查询数据. a.数据分类 接口地址:http://apis.juhe.cn/baidu/getCategory 支持格式:JSON/XML 请求方式:GET 请求示例:http://apis.juh

获取百度地图POI数据二(准备搜索关键词)

上篇讲到  想要获取尽可能多的POI数据 需要准备尽可能多的搜索关键字   那么这些关键字如何得来呢?   本人使用的方法是通过一些网站来获取这些关键词   http://poi.mapbar.com/这个网站有全国各地的POI数据  对各个城市的POI数据都有归类  我便是从这个网站上面获取了上海市的各个类别的关键词  比如上海市所有的门牌号码  公路名称  地铁名称等等  下面介绍如何获取这些信息 和获取百度POI数据所用的方法一样,都是通过分析这个网站的url然后替换其中的参数获取不同的数

获取百度地图POI数据三(模拟关键词搜索)

上一篇博文中讲到如何获取用于搜索的关键词,并且已经准备好了一百五十万的关键词   这其中有门牌号码,餐馆酒店名称,公司名称,道路名称等.有了这些数据,我们就可以通过代码,模拟我们在百度地图的搜索框中搜索地点,从而获取其返回的POI数据.下面直接上代码~ 一 .准备好用于存储数据的数据库表 由于百度返回的POI数据都是JSON字符串且子节点非常多,为了按照子节点一一存储,就需要建这么一张包含很多字段的表,虽然麻烦,但是信息很全面.当然各位也可以选择性的存储其中的数据. 二.获取并解析数据的代码 c

获取百度地图POI数据一(详解百度返回的POI数据)

POI是一切可以抽象为空间点的现实世界的实体,比如餐馆,酒店,车站,停车场等.POI数据具有空间坐标和各种属性,是各种地图查询软件的基础数据之一.百度地图作为国内顶尖的地图企业,其上具有丰富的POI数据,要获取其上的POI数据可以根据百度地图提供的API,但是这种方式有限制,能获取的数据极少.本文将详细介绍通过模拟HTTP请求的方式获取其上的POI数据. 当我们在百度地图的搜索框中通过输入关键字进行搜索时,这其实就是发送一个HTTP请求到百度的服务器,然后服务器返回数据. 打开网页的调试面板可以

百度地图POI数据爬取,突破百度地图API爬取数目“400条“的限制11。

1.POI爬取方法说明 1.1AK申请 登录百度账号,在百度地图开发者平台的API控制台申请一个服务端的ak,主要用到的是Place API.检校方式可设置成IP白名单,IP直接设置成了0.0.0.0/0比较方便. Place API 提供的接口用于返回查询某个区域的某类POI数据,且提供单个POI的详情查询服务,用户可以使用C#.C++.Java,Python等开发语言发送请求,接收json.xml的数据.关于Place API的具体使用可以参考:Place API Web服务API 1.2爬

百度地图api - 城市列表

<!doctype html><html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus®"> <meta name="Author" content=""> <meta name="K

android学习之基于百度地图的地点检索和标记

在现在的生活之中,地图越来越重要,作为一个普通的程序员,我们不可能自己去编写一个地图,所以,这篇文章写的是关于如何利用百度的第三方框架来写自己的程序, 首先我们需要成为百度开发者,然后下载相关的SDK,在百度里面搜索百度地图,然后进入百度api首页,然后点击进入,这里我只说一些需要注意的点,第一,在创建应用的时候,我们应该选择的是androidsdk,然后android的sha1 fingerprint可以通过eclipse中的windows->preference->android->