Android【学习心得】- 高德地图开发【输入提示搜索】【第十二周】【更新完毕】
Android【学习心得】- 高德地图开发【第十二周】【第二十二天】【周一】
摘要:高德地图之覆盖物显示【兴趣点搜索(三)】
昨天分享了关键字搜索,今天来分享下周边搜索,使用 PoiSearch.SearchBound(LatLonPoint center, int radiusInMeters) 设置周边圆形搜索范围。参数 “center” 为搜索的中心点坐标,“radiusInMeters” 为周边搜索的范围。
和关键字搜索类似,我们只要修改两个方法就可以了,先修改doSearchQuery():
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
/**
* 开始进行poi搜索
*/
protected
void
doSearchQuery() {
showProgressDialog();
// 显示进度框
/**关键字搜索*/
// currentPage = 0;
// // 第一个参数表示搜索字符串,第二个参数表示poi搜索类型,第三个参数表示poi搜索区域(空字符串代表全国)
// query = new PoiSearch.Query(keyWord, "", cityET.getText().toString());
// // 设置每页最多返回多少条poiitem
// query.setPageSize(10);
// // 设置查第一页
// query.setPageNum(currentPage);
//
// poiSearch = new PoiSearch(this, query);
// poiSearch.setOnPoiSearchListener(this);
// poiSearch.searchPOIAsyn();
currentPage =
0
;
// 第一个参数表示搜索字符串,第二个参数表示POI搜索类型
// 第三个参数表示POI搜索区域(空字符串代表全国)
query =
new
PoiSearch.Query(keyWord,
"餐厅"
,
"杭州市"
);
query.setPageSize(
10
);
// 设置每页最多返回多少条poiitem
query.setPageNum(currentPage);
//设置查第一页
PoiSearch poiSearch =
new
PoiSearch(
this
, query);
// 搜索杭州市政府附件1000米范围
poiSearch.setBound(
new
PoiSearch.SearchBound(
new
LatLonPoint(
30.243753
,
120.18252
),
1000
));
poiSearch.setOnPoiSearchListener(
this
);
poiSearch.searchPOIAsyn();
}
|
然后是修改搜索之后回调的方法onPoiSearched:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
/**
* POI信息查询回调方法
*/
@Override
public
void
onPoiSearched(PoiResult poiResult,
int
rCode) {
Log.d(TAG,
"onPoiSearched, rCode = "
+ rCode);
dissmissProgressDialog();
// 隐藏对话框
// if (rCode == 0) {
// // 搜索poi的结果
// if (poiResult != null && poiResult.getQuery() != null) {
// // 是否是同一条
// if (poiResult.getQuery().equals(query)) {
// poiResult = poiResult;
// // 取得搜索到的poiitems有多少页
// // 取得第一页的poiitem数据,页数从数字0开始
// List<PoiItem> poiItems = poiResult.getPois();
// // 当搜索不到poiitem数据时,会返回含有搜索关键字的城市信息
// List<SuggestionCity> suggestionCities = poiResult.getSearchSuggestionCitys();
//
// if (poiItems != null && poiItems.size() > 0) {
// mAMap.clear();// 清理之前的图标
// PoiOverlay poiOverlay = new PoiOverlay(mAMap, poiItems);
// poiOverlay.removeFromMap();
// poiOverlay.addToMap();
// poiOverlay.zoomToSpan();
// } else if (suggestionCities != null
// && suggestionCities.size() > 0) {
// showSuggestCity(suggestionCities);
// } else {
// Toast.makeText(this, "没有搜索到相关数据", Toast.LENGTH_SHORT).show();
// }
// }
// } else {
// Toast.makeText(this, "没有搜索到相关数据", Toast.LENGTH_SHORT).show();
// }
// } else if (rCode == 27) {
// Toast.makeText(this, "搜索失败,请检查网络连接!", Toast.LENGTH_SHORT).show();
// } else if (rCode == 32) {
// Toast.makeText(this, "key验证无效!", Toast.LENGTH_SHORT).show();
// } else {
// Toast.makeText(this, "未知错误,请稍后重试!错误码为" + rCode, Toast.LENGTH_SHORT).show();
// }
if
(rCode ==
0
) {
// 搜索POI的结果
if
(poiResult !=
null
&& poiResult.getQuery() !=
null
) {
// 是否是同一条
if
(poiResult.getQuery().equals(query)) {
poiResult = poiResult;
// 取得搜索到的poiitems有多少页
int
resultPages = poiResult.getPageCount();
// 取得第一页的poiitem数据,页数从数字0开始
List poiItems = poiResult.getPois();
// 当搜索不到poiitem数据时,会返回含有搜索关键字的城市信息
List suggestionCities = poiResult.getSearchSuggestionCitys();
dissmissProgressDialog();
// 隐藏对话框
if
(poiItems !=
null
&& poiItems.size() >
0
) {
mAMap.clear();
//清理之前的图标
PoiOverlay poiOverlay =
new
PoiOverlay(mAMap, poiItems);
poiOverlay.removeFromMap();
poiOverlay.addToMap();
poiOverlay.zoomToSpan();
}
else
if
(suggestionCities !=
null
&& suggestionCities.size() >
0
) {
showSuggestCity(suggestionCities);
}
else
{
Toast.makeText(
this
,
"没有搜索到相关数据"
, Toast.LENGTH_SHORT).show();
}
}
}
else
{
dissmissProgressDialog();
// 隐藏对话框
Toast.makeText(
this
,
"没有搜索到相关数据"
, Toast.LENGTH_SHORT).show();
}
}
else
{
dissmissProgressDialog();
// 隐藏对话框
Toast.makeText(
this
,
"搜索失败,请检查网络连接!"
, Toast.LENGTH_SHORT).show();
}
}
|
最后修改一下按钮点击的方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
/**
* 点击搜索按钮
*/
public
void
searchButton() {
// keyWord = keyWordET.getText().toString();
// if ("".equals(keyWord)) {
// Toast.makeText(this, "请输入搜索关键字", Toast.LENGTH_SHORT).show();
// return;
// } else {
// doSearchQuery();
// }
doSearchQuery();
}
|
这样就OK啦,运行起来看看:
因为我直接在代码里面写好了数据,所以直接点击开始搜索:
搜索到结果:
真的非常简单。
今天就先分享到这里了。