Search in sources :

Example 1 with PoiResult

use of com.amap.api.services.poisearch.PoiResult in project YourEyes by SevenLJY.

the class PoiSearchActivity method onCreate.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_poisearch);
    sv_destination = (SearchView) findViewById(R.id.sv_destination);
    lv_result = (ListView) findViewById(R.id.lv_result);
    poiItems = new ArrayList<PoiItem>();
    listItems = new ArrayList<Map<String, String>>();
    //对搜索框的设置
    //设置不自动缩小为图标
    sv_destination.setIconifiedByDefault(false);
    //显示搜索按钮
    sv_destination.setSubmitButtonEnabled(true);
    longitude = 0;
    latitude = 0;
    latitudeStatus = 0;
    city = "";
    //初始化定位
    initLocation();
    startLocation();
    //搜索框搜索监听
    sv_destination.setOnQueryTextListener(new SearchView.OnQueryTextListener() {

        @Override
        public boolean onQueryTextSubmit(String s) {
            //点击搜索时触发,将搜索结果展示在ListView中
            for (int num = 0; num < listItems.size(); num++) {
                listItems.get(num).clear();
            }
            listItems.clear();
            if (city.length() != 0) {
                //city值仍为""时无意义,搜索所得位置不在本城市,该处处理为不予显示
                query = new PoiSearch.Query(s, "", city);
                //设置每页展示20个结果
                query.setPageSize(10);
                //设置查询页码
                query.setPageNum(0);
                poiSearch = new PoiSearch(PoiSearchActivity.this, query);
                //设置周边搜索的中心点以及半径,以定位的当前位置为中心点
                poiSearch.setBound(new PoiSearch.SearchBound(new LatLonPoint(latitude, longitude), 3000));
                poiSearch.setOnPoiSearchListener(new PoiSearch.OnPoiSearchListener() {

                    @Override
                    public void onPoiSearched(PoiResult poiResult, int i) {
                        //搜索结果在列表中显示
                        if (i == 1000 && poiResult != null) {
                            poiItems = poiResult.getPois();
                            for (PoiItem item : poiItems) {
                                listItem = new HashMap<String, String>();
                                listItem.put("title", item.toString());
                                listItem.put("content", item.getCityName() + item.getAdName() + item.getSnippet());
                                listItem.put("latitude", Double.toString(item.getLatLonPoint().getLatitude()));
                                listItem.put("longitude", Double.toString(item.getLatLonPoint().getLongitude()));
                                listItems.add(listItem);
                                item.toString();
                            }
                            adapter = new SimpleAdapter(PoiSearchActivity.this, listItems, R.layout.array_poiitems, new String[] { "title", "content" }, new int[] { R.id.tv_title, R.id.tv_content });
                            lv_result.setAdapter(adapter);
                        } else {
                            ToastUtil.show(PoiSearchActivity.this, "无搜索结果 请检查关键字");
                        }
                    }

                    @Override
                    public void onPoiItemSearched(PoiItem poiItem, int i) {
                    //搜索结果回调,暂时不需使用
                    }
                });
                poiSearch.searchPOIAsyn();
            } else {
                ToastUtil.show(PoiSearchActivity.this, "正在获取定位信息  请稍候");
            }
            return false;
        }

        @Override
        public boolean onQueryTextChange(String s) {
            //搜索框文字改变时触发,暂不做优化
            return false;
        }
    });
    /**
         * 为列表项单击事件添加监听
         * 单击相应列表项时跳转到导航界面并将目的地传至导航界面
         * */
    lv_result.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            Bundle data = new Bundle();
            data.putDouble("latitude", Double.parseDouble(listItems.get(i).get("latitude")));
            data.putDouble("longitude", Double.parseDouble(listItems.get(i).get("longitude")));
            data.putDouble("myLatitude", latitude);
            data.putDouble("myLongitude", longitude);
            if (latitude == 0) {
                ToastUtil.show(PoiSearchActivity.this, "您的定位信息出错,请检查是否打开了GPS");
            } else {
                Intent intent = new Intent(PoiSearchActivity.this, BasicWalkNaviActivity.class);
                intent.putExtras(data);
                startActivity(intent);
            }
        }
    });
}
Also used : PoiResult(com.amap.api.services.poisearch.PoiResult) PoiItem(com.amap.api.services.core.PoiItem) LatLonPoint(com.amap.api.services.core.LatLonPoint) PoiSearch(com.amap.api.services.poisearch.PoiSearch) Bundle(android.os.Bundle) SimpleAdapter(android.widget.SimpleAdapter) Intent(android.content.Intent) SearchView(android.widget.SearchView) View(android.view.View) AdapterView(android.widget.AdapterView) ListView(android.widget.ListView) LatLonPoint(com.amap.api.services.core.LatLonPoint) SearchView(android.widget.SearchView) AdapterView(android.widget.AdapterView) HashMap(java.util.HashMap) Map(java.util.Map)

Example 2 with PoiResult

use of com.amap.api.services.poisearch.PoiResult in project KL2 by jweihao.

the class SearchActivity method initListener.

private void initListener() {
    mOnClickListener = new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            switch(view.getId()) {
                case R.id.iv_back:
                    finish();
                    break;
                default:
                    break;
            }
        }
    };
    mIvBack.setOnClickListener(mOnClickListener);
    mEtSearch.addTextChangedListener(new TextWatcher() {

        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
        }

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
        }

        @Override
        public void afterTextChanged(Editable editable) {
            if (null != editable) {
                if (0 == editable.length()) {
                    // 没有输入则清空搜索记录
                    mList.clear();
                    mSearchAddressAdapter.setList(mList, "");
                } else {
                    if (null != location) {
                        doSearchQuery(editable.toString(), location.getCity(), new LatLonPoint(location.getLatitude(), location.getLongitude()));
                    } else {
                        doSearchQuery(editable.toString(), "", null);
                    }
                }
            }
        }
    });
    mOnItemClickLisenter = new OnItemClickLisenter() {

        @Override
        public void onItemClick(int position) {
            PoiItem poiItem = mList.get(position);
            if (null != poiItem) {
                // 获取信息并回传上一页面
                Intent intent = new Intent();
                intent.putExtra(DatasKey.SEARCH_INFO, poiItem);
                setResult(RESULT_OK, intent);
                finish();
            }
        }
    };
    mSearchAddressAdapter.setOnItemClickLisenter(mOnItemClickLisenter);
    mOnPoiSearchListener = new PoiSearch.OnPoiSearchListener() {

        @Override
        public void onPoiSearched(PoiResult result, int i) {
            if (i == 1000) {
                if (result != null && result.getQuery() != null) {
                    // 搜索poi的结果
                    if (result.getQuery().equals(mQuery)) {
                        // 是否是同一条
                        if (null != mList) {
                            mList.clear();
                        }
                        // 取得第一页的poiitem数据,页数从数字0开始
                        mList.addAll(result.getPois());
                        if (null != mSearchAddressAdapter) {
                            mSearchAddressAdapter.setList(mList, mEtSearch.getText().toString().trim());
                            mRecyclerView.smoothScrollToPosition(0);
                        }
                    }
                }
            }
        }

        @Override
        public void onPoiItemSearched(PoiItem poiItem, int i) {
        }
    };
}
Also used : PoiSearch(com.amap.api.services.poisearch.PoiSearch) PoiResult(com.amap.api.services.poisearch.PoiResult) OnItemClickLisenter(com.jweihao.jdemo.utils.OnItemClickLisenter) Intent(android.content.Intent) ImageView(android.widget.ImageView) RecyclerView(android.support.v7.widget.RecyclerView) View(android.view.View) LatLonPoint(com.amap.api.services.core.LatLonPoint) TextWatcher(android.text.TextWatcher) Editable(android.text.Editable) PoiItem(com.amap.api.services.core.PoiItem) LatLonPoint(com.amap.api.services.core.LatLonPoint)

Aggregations

Intent (android.content.Intent)2 View (android.view.View)2 LatLonPoint (com.amap.api.services.core.LatLonPoint)2 PoiItem (com.amap.api.services.core.PoiItem)2 PoiResult (com.amap.api.services.poisearch.PoiResult)2 PoiSearch (com.amap.api.services.poisearch.PoiSearch)2 Bundle (android.os.Bundle)1 RecyclerView (android.support.v7.widget.RecyclerView)1 Editable (android.text.Editable)1 TextWatcher (android.text.TextWatcher)1 AdapterView (android.widget.AdapterView)1 ImageView (android.widget.ImageView)1 ListView (android.widget.ListView)1 SearchView (android.widget.SearchView)1 SimpleAdapter (android.widget.SimpleAdapter)1 OnItemClickLisenter (com.jweihao.jdemo.utils.OnItemClickLisenter)1 HashMap (java.util.HashMap)1 Map (java.util.Map)1