关于高德地图的基本配置和使用请参看:Android之高德地图SDK配置及简单使用详解
效果图
功能
- 可以实现对当前位置的定位
- 可以对当前位置附近进行关键字搜索,并可以选择搜索范围
代码
- 主函数代码:PoiKeywordSearchActivity.java
public class PoiKeywordSearchActivity extends FragmentActivity implements
OnMarkerClickListener, InfoWindowAdapter, TextWatcher,
OnPoiSearchListener, OnClickListener, InputtipsListener {
private AMap aMap;
private AutoCompleteTextView searchText;// 输入搜索关键字
private String keyWord = "";// 要输入的poi搜索关键字
private ProgressDialog progDialog = null;// 搜索时进度条
private EditText editCity;// 要输入的城市名字或者城市区号
private PoiResult poiResult; // poi返回的结果
private int currentPage = 0;// 当前页面,从0开始计数
private PoiSearch.Query query;// Poi查询条件类
private PoiSearch poiSearch;// POI搜索
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.poikeywordsearch_activity);
init();
}
/**
* 初始化AMap对象
*/
private void init() {
if (aMap == null) {
aMap = ((SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map)).getMap();
setUpMap();
}
}
/**
* 设置页面监听
*/
private void setUpMap() {
Button searButton = (Button) findViewById(R.id.searchButton);
searButton.setOnClickListener(this);
Button nextButton = (Button) findViewById(R.id.nextButton);
nextButton.setOnClickListener(this);
searchText = (AutoCompleteTextView) findViewById(R.id.keyWord);
searchText.addTextChangedListener(this);// 添加文本输入框监听事件
editCity = (EditText) findViewById(R.id.city);
aMap.setOnMarkerClickListener(this);// 添加点击marker监听事件
aMap.setInfoWindowAdapter(this);// 添加显示infowindow监听事件
}
/**
* 点击搜索按钮
*/
public void searchButton() {
keyWord = AMapUtil.checkEditText(searchText);
if ("".equals(keyWord)) {
ToastUtil.show(PoiKeywordSearchActivity.this, "请输入搜索关键字");
return;
} else {
doSearchQuery();
}
}
/**
* 点击下一页按钮
*/
public void nextButton() {
if (query != null && poiSearch != null && poiResult != null) {
if (poiResult.getPageCount() - 1 > currentPage) {
currentPage++;
query.setPageNum(currentPage);// 设置查后一页
poiSearch.searchPOIAsyn();
} else {
ToastUtil.show(PoiKeywordSearchActivity.this,
R.string.no_result);
}
}
}
/**
* 显示进度框
*/
private void showProgressDialog() {
if (progDialog == null)
progDialog = new ProgressDialog(this);
progDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progDialog.setIndeterminate(false);
progDialog.setCancelable(false);
progDialog.setMessage(