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