高德地图--获取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() { } }