265.高德地图的使用---输入内容自动提示(5)

输入提示是指根据用户输入的关键词,给出相应的提示信息,将最有可能的搜索词呈现给用户,以减少用户输入信息,提升用户体验。如:输入“方恒”,提示“方恒国际中心A座”,“方恒购物中心”等。

实现输入提示的步骤如下:
1、继承 InputtipsListener 监听。
2、构造 InputtipsQuery 对象,通过 InputtipsQuery(java.lang.String keyword, java.lang.String city) 设置搜索条件。

//第二个参数传入null或者“”代表在全国进行检索,否则按照传入的city进行检索
InputtipsQuery inputquery = new InputtipsQuery(newText, city);
inputquery.setCityLimit(true);//限制在当前城市

3、构造 Inputtips 对象,并设置监听。

Inputtips inputTips = new Inputtips(InputtipsActivity.this, inputquery);
inputTips.setInputtipsListener(this);

4、调用 PoiSearch 的 requestInputtipsAsyn() 方法发送请求。

inputTips.requestInputtipsAsyn();

5、通过回调接口 onGetInputtips 解析返回的结果,获取输入提示返回的信息。
6、说明:
1)在回调中解析 tipList,获取输入提示词的相关信息。
2)tipList 数组中的对象是 Tip ,Tip 类中包含 PoiID、Adcode、District、Name 等信息。
注意:

    a 、由于提示中会出现相同的关键字,但是这些关键字所在区域不同,使用时可以通过 tipList.get(i).getDistrict() 获得区域,也可以在提示时在关键字后加上区域。
    b、当 Tip 的 getPoiID() 返回空,并且 getPoint() 也返回空时,表示该提示词不是一个真实存在的 POI,这时区域、经纬度参数都是空的,此时可根据该提示词进行POI关键词搜索
    c、当 Tip 的 getPoiID() 返回不为空,但 getPoint() 返回空时,表示该提示词是一个公交线路名称,此时用这个id进行公交线路查询。
    d、当 Tip 的 getPoiID() 返回不为空,且 getPoint() 也不为空时,表示该提示词一个真实存在的POI,可直接显示在地图上。
3)返回结果成功或者失败的响应码。1000为成功,其他为失败(详细信息参见网站开发指南-实用工具-错误码对照表)

@Override
public void onGetInputtips(final List<Tip> tipList, int rCode) {
        //通过tipList获取Tip信息
    }

范例:绑定attv控件 自动搜索高德地图的兴趣点列表 自动弹出输入提示列表

//绑定attv控件 自动搜索高德地图的兴趣点列表 自动弹出输入提示列表
    protected  void initAutoCompeleteTextView()
    {
        //给attv控件设置一个阈值
        _attv_dstAddr.setThreshold(1);

        //给autocompleteTextView绑定自动补齐功能
        _attv_dstAddr.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) {
                //当文本内容发生改变的时候 调用此回调函数


                //从高德的服务器获取有关跟关键字匹配的poi名称的数据

                //(1) 得到要搜索的关键字
                final String keyword = _attv_dstAddr.getText().toString();
                if(keyword == null || keyword.length() ==0) {
                    Log.e("Amap", "search keyword == null");
                    return;
                }

                //(2) 创建一个query 查询所有tips的条件
                InputtipsQuery query = new InputtipsQuery(keyword, _city);

                //(3) 创建一个InputTips 查询句柄
                Inputtips search = new Inputtips(getApplicationContext(), query);

                //(4) 给InputTips 设定回调函数
                search.setInputtipsListener(new Inputtips.InputtipsListener() {
                    @Override
                    public void onGetInputtips(List<Tip> list, int i) {

                        if (i != 1000) {
                            Log.e("Amap", "search input tips error i = "+ i);
                            return;
                        }


                        // 1 应该从服务器获取能够匹配的 单词集合
                        ArrayList<String> poiList = new ArrayList<String>();

                        /*
                        poiList.add("gailun");
                        poiList.add("gailun1");
                        poiList.add("gailun2");
                        poiList.add("gailun3");
                        poiList.add("gailun4");
                        poiList.add("gailun5");
                        */

                        for (int index = 0; index < list.size(); index++) {
                            Log.e("Amap", "通过 "+keyword +"匹配到的tips 有 "+list.get(index).getName());
                            poiList.add(list.get(index).getName());

                        }


                        // 2 给autoCompleteTextView 设置一个适配器Adapter
                        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(),
                                android.R.layout.simple_list_item_1, poiList);

                        // 3 将Adapter  和 给autoCompleteTextView 相关联
                        _attv_dstAddr.setAdapter(adapter);

                        // 4 触发adapter 触发控件显示  单词集合
                        adapter.notifyDataSetChanged();

                    }
                });


                //(5) 开启InputTips 向服务器发送查询请求
                search.requestInputtipsAsyn();


            }

            @Override
            public void afterTextChanged(Editable s) {

            }
        });
    }

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_passenger);

        initUI();
        createMap(savedInstanceState);
        doLocation();

        doSerarchPOI();
        initAutoCompeleteTextView();

    }

完整代码

链接:https://lbs.amap.com/api/android-sdk/guide/map-data/poi

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值