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);
}
}
});
}
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) {
}
};
}
Aggregations