Androidd 高德地图功能系列开发(搜索模块)

今天这篇博客大概分为
1:模糊搜索(具体行业)
2:天气查询
3:获取地址描述数据(地理编码(地址转坐标)或者 逆地理编码(坐标转地址))

一、模糊搜索
有时候需求是文本框里输入武汉,就搜索出包含武汉的关键词(如武汉大学,武汉天河机场,武汉等),下面我们来实现。
1、填写高德key
2、导入高德搜索包,我这里用的是(AMap_Search_V3.4.0_20160811.jar)
这里我们就可以开始实现功能,一个文本框输入搜索内容,然后POI模糊搜索。

public class MainActivity extends Activity {
   
   
    EditText et_view;
    PoiSearch poiSearch;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_layout);
        et_view = (EditText) findViewById(R.id.et_view);
        et_view.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

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

            }

            @Override
            public void afterTextChanged(Editable s) {
                String content = et_view.getText().toString().trim();
                //判断内容不为空
                if (null != content && !content.isEmpty()) {
                    //通过Query设置搜索条件,第一个参数为搜索内容,第二个参数为搜索类型,第三个参数为搜索范围(空字符串代表全国)。
                    PoiSearch.Query query = new PoiSearch.Query(content, "", "");
                    poiSearch = new PoiSearch(MainActivity.this, query);
                    poiSearch.setOnPoiSearchListener(new PoiSearch.OnPoiSearchListener() {
                        @Override
                        public void onPoiSearched(PoiResult poiResult, int errcode) {
                            //判断搜索成功
                            if (errcode == 1000) {
                                if (null != poiResult && poiResult.getPois().size() > 0) {
                                    for (int i = 0; i < poiResult.getPois().size(); i++) {
                                        Log.i("TAG_MAIN", "POI 的行政区划代码和名称=" + poiResult.getPois().get(i).getAdCode()+","+poiResult.getPois().get(i).getAdName());
                                        Log.i("TAG_MAIN", "POI的所在商圈=" + poiResult.getPois().get(i).getBusinessArea());
                                        Log.i("TAG_MAIN", "POI的城市编码与名称=" + poiResult.getPois().get(i).getCityCode()+","+poiResult.getPois().get(i).getCityName());
                                        Log.i("TAG_MAIN", "POI 的经纬度=" + poiResult.getPois().get(i).getLatLonPoint());
                                        Log.i("TAG_MAIN", "POI的地址=" + poiResult.getPois().get(i).getSnippet());
                                        Log.i("TAG_MAIN", "POI的名称=" + poiResult.getPois().get(i).getTitle());
                                    }
                                }
                            }
                        }

                        @Override
                        public void onPoiItemSearched(PoiItem poiItem, int i) {

                        }
                    });
                    poiSearch.searchPOIAsyn();
                }
            }
        });
    }
}

我搜索的字符串是:武汉,搜索的城市是:武汉,搜索结果如下:
09-26 14:53:04.490 25437-25437/chapter.com.chapter I/TAG_MAIN: POI 的行政区划代码和名称=420111,洪山区
09-26 14:53:04.491 25437-25437/chapter.com.chapter I/TAG_MAIN: POI的所在商圈=
09-26 14:53:04.491 25437-25437/chapter.com.chapter I/TAG_MAIN: POI的城市编码与名称=027,武汉市
09-26 14:53:04.491 25437-25437/chapter.com.chapter I/TAG_MAIN: POI 的经纬度=30.607375,114.424376
09-26 14:53:04.491 25437-25437/chapter.com.chapter I/TAG_MAIN: POI的地址=4号线
09-26 14:53:04.491 25437-25437/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉火车站(地铁站)
09-26 14:53:04.491 25437-25437/chapter.com.chapter I/TAG_MAIN: POI 的行政区划代码和名称=420102,江岸区
09-26 14:53:04.491 25437-25437/chapter.com.chapter I/TAG_MAIN: POI的所在商圈=汉阳江滩公园
09-26 14:53:04.491 25437-25437/chapter.com.chapter I/TAG_MAIN: POI的城市编码与名称=027,武汉市
09-26 14:53:04.492 25437-25437/chapter.com.chapter I/TAG_MAIN: POI 的经纬度=30.584355,114.298572
09-26 14:53:04.492 25437-25437/chapter.com.chapter I/TAG_MAIN: POI的地址=江岸区
09-26 14:53:04.493 25437-25437/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉市
09-26 14:53:04.493 25437-25437/chapter.com.chapter I/TAG_MAIN: POI 的行政区划代码和名称=420102,江岸区
09-26 14:53:04.493 25437-25437/chapter.com.chapter I/TAG_MAIN: POI的所在商圈=汉阳江滩公园
09-26 14:53:04.493 25437-25437/chapter.com.chapter I/TAG_MAIN: POI的城市编码与名称=027,武汉市
09-26 14:53:04.493 25437-25437/chapter.com.chapter I/TAG_MAIN: POI 的经纬度=30.593235,114.305429
09-26 14:53:04.493 25437-25437/chapter.com.chapter I/TAG_MAIN: POI的地址=沿江大道188号
09-26 14:53:04.493 25437-25437/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉市人民政府

这只是一部分,如果还需要其他更多内容可在http://a.amap.com/lbs/static/unzip/Android_Map_Doc/index.html里查找可返回的内容

当然我观察了某一部分APP,比如医学类APP,那么他要求的可能是搜索结果只能是医院,如果是出行类APP可能要求搜索结果只是酒店等,像这种要求搜索结果是特定类型的我们应该如何实现呢,我们可以看到Query查询的第二个参数没有填写,第三个参数是城市,那么第二个参数我们就需要去填写查询的分类了,这里我们填写医疗保健服务的类型码。
PoiSearch.Query query = new PoiSearch.Query(“武汉”, “090100”, “”);
然后我们去搜索
09-26 15:05:24.296 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉大学医院
09-26 15:05:24.296 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉市汉口医院
09-26 15:05:24.296 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉仁爱医院
09-26 15:05:24.296 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉市第二医院
09-26 15:05:24.297 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉东南医院
09-26 15:05:24.297 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉中原医院
09-26 15:05:24.297 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉华夏医院
09-26 15:05:24.297 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉华西医院
09-26 15:05:24.297 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉市第十一医院
09-26 15:05:24.297 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉市亚心七医院
09-26 15:05:24.298 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉市汉口医院(东区)
09-26 15:05:24.298 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉常青医院
09-26 15:05:24.298 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉友好医院(鹦鹉大道)
09-26 15:05:24.298 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉紫荆医院
09-26 15:05:24.298 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉东方医院
09-26 15:05:24.298 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉市第九医院
09-26 15:05:24.298 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉蓝湖医院
09-26 15:05:24.298 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉市东湖医院
09-26 15:05:24.299 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉仁和医院
09-26 15:05:24.299 11328-11328/chapter.com.chapter I/TAG_MAIN: POI的名称=武汉市汉阳医院

那么搜索结果的类型就全部是医疗保健服务的了,那么类型码有哪些呢,类型码如下:

010000 汽车服务 汽车服务相关 汽车服务相关 <

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值