高德地图--获取poi数据

根据输入的关键字进行Poi搜索,点击搜索到的结果列表中的一项,返回显示和定位页,定位并显示该地址的详细信息;


/*
* 售后网点搜索
* Created by wangchm on 2017/4/25 0031.
* */
public class SearchSaleActivity extends AppCompatActivity {
    private static final String TAG = "SearchSaleActivity";

    @BindView(R.id.salesearch_edit)
    TextField salesearchEdit;
    @BindView(R.id.tv_saleCancel)
    TextView tvSaleCancel;
    @BindView(R.id.lvResult)
    ListView lvResult;
    GeocodeSearch geocodeSearch;
    Context mContext;
    SearchMapAdapter adapter;
    List<GeocodeAddress> addrList;
    PoiSearch poiSearch;
    SearchPoiMapAdapter poiAdapter;
    ArrayList<PoiItem> poiItems;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_search_sale);
        ButterKnife.bind(this);
        mContext = SearchSaleActivity.this;
        addrList = new ArrayList<GeocodeAddress>();

        salesearchEdit.addTextChangedListener(new MyTextChangeListener());
        lvResult.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        
 

                Bundle bundle1 = new Bundle();
                bundle1.putParcelable("poi",poiItems.get(position));
                Intent backIntent = new Intent(mContext,SaleMapActivity.class);
                backIntent.putExtra("poibundle",bundle1);
                setResult(RESULT_FIRST_USER,backIntent);
                finish();
            }
        });
    }

    int currentPage = 1;
    //文本框的改变监听
    class MyTextChangeListener implements 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) {
            String newText = s.toString().trim();

            //获取Poi数据
            //构造 PoiSearch.Query 对象,通过 PoiSearch.Query(String query, String ctgr, String city) 设置搜索条件。
            //keyWord表示搜索字符串,第二个参数表示POI搜索类型,二者选填其一,
            //cityCode表示POI搜索区域,可以是城市编码也可以是城市名称,也可以传空字符串,空字符串代表全国在全国范围内进行搜索
            PoiSearch.Query query = new PoiSearch.Query(newText,"","0532");
            query.setPageSize(10);
            query.setPageNum(currentPage);
            //构造 PoiSearch 对象,并设置监听。
            poiSearch = new PoiSearch(mContext,query);
            poiSearch.setOnPoiSearchListener(new PoiSearch.OnPoiSearchListener() {
                @Override
                public void onPoiSearched(PoiResult poiResult, int i) {
                    //通过回调接口 onPoiSearched 解析返回的结果,将查询到的 POI 以绘制点的方式显示在地图上。
                    if(i == 1000){
                        if(poiResult != null && poiResult.getPois() != null && poiResult.getPois().size() != 0){
                            poiItems = poiResult.getPois();
                            poiAdapter = new SearchPoiMapAdapter(mContext,poiItems);
                            lvResult.setAdapter(poiAdapter);
                        }
                    }
                }

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

                }
            });
            //调用 PoiSearch 的 searchPOIAsyn() 方法发送请求。
            poiSearch.searchPOIAsyn();

        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    }

    @OnClick(R.id.tv_saleCancel)
    public void onClick() {
    }
}

经验分享 程序员 微信小程序 职场和发展