use of com.amap.api.services.poisearch.PoiSearch 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.PoiSearch in project ride-read-android by Ride-Read.
the class MapFragment method searchKeyWord.
private void searchKeyWord() {
String keyWord = mEdtSearch.getText().toString();
if (TextUtils.isEmpty(keyWord))
return;
PoiSearch.Query query = new PoiSearch.Query(keyWord, "", "");
//keyWord表示搜索字符串,
//第二个参数表示POI搜索类型,二者选填其一,
//POI搜索类型共分为以下20种:汽车服务|汽车销售|
//汽车维修|摩托车服务|餐饮服务|购物服务|生活服务|体育休闲服务|医疗保健服务|
//住宿服务|风景名胜|商务住宅|政府机构及社会团体|科教文化服务|交通设施服务|
//金融保险服务|公司企业|道路附属设施|地名地址信息|公共设施
//cityCode表示POI搜索区域,可以是城市编码也可以是城市名称,也可以传空字符串,空字符串代表全国在全国范围内进行搜索
// 设置每页最多返回多少条poiitem
query.setPageSize(10);
//设置查询页码
query.setPageNum(1);
PoiSearch poiSearch = new PoiSearch(getActivity(), query);
poiSearch.setOnPoiSearchListener(this);
poiSearch.searchPOIAsyn();
}
Aggregations