android地图搜索功能,Android百度地图API集成三《搜索》

书接上回↑

一、基础地图界面地址:http://www.cnblogs.com/dhr125/p/5969980.html

二、地图定位地址:http://www.cnblogs.com/dhr125/p/5970118.html

搜索功能

1.在xml文件中加入布局

1

3 android:layout_height="wrap_content">

4

6 android:layout_height="wrap_content"

7 android:layout_weight="1"

8 android:hint="请输入搜索地址"

9 android:id="@+id/etsearch"/>

10

12 android:layout_height="wrap_content"

13 android:text="搜索"

14 android:id="@+id/btnsearch"/>

15

2.按照下图位置,找到PoiSearchDemo.java,准备复制代码

257b3f0a19dbda2c9ae18c92cdb07bff.png

3.复制下面一段代码到onCreate中,然后让Activity实现OnGetPoiSearchResultListener

// 初始化搜索模块,注册搜索事件监听

mPoiSearch = PoiSearch.newInstance();

mPoiSearch.setOnGetPoiSearchResultListener(this);

4.实现后会重写下面3个方法

1 @Override2 public voidonGetPoiResult(PoiResult poiResult) {3

4 }5

6 @Override7 public voidonGetPoiDetailResult(PoiDetailResult poiDetailResult) {8

9 }10

11 @Override12 public voidonGetPoiIndoorResult(PoiIndoorResult poiIndoorResult) {13

14 }

5.向重写的方法onGetPoiResult中加入代码,然后根据报错修改代码

1 if (poiResult == null || poiResult.error ==SearchResult.ERRORNO.RESULT_NOT_FOUND) {2 Toast.makeText(MainActivity.this, "未找到结果", Toast.LENGTH_LONG)3 .show();4 return;5 }6 if (poiResult.error ==SearchResult.ERRORNO.NO_ERROR) {7 mBaiduMap.clear();8 PoiOverlay overlay = newMyPoiOverlay(mBaiduMap);9 mBaiduMap.setOnMarkerClickListener(overlay);10 overlay.setData(poiResult);11 overlay.addToMap();12 overlay.zoomToSpan();13 showNearbyArea(center, radius);14

15 return;16 }

6.按照下面位置找到两个类,复制到项目中

b85ee2fad5818bfb1022caf2c2ab6700.png

7.向工程中加入代码

1 private class MyPoiOverlay extendsPoiOverlay {2

3 publicMyPoiOverlay(BaiduMap baiduMap) {4 super(baiduMap);5 }6

7 @Override8 public boolean onPoiClick(intindex) {9 super.onPoiClick(index);10 PoiInfo poi =getPoiResult().getAllPoi().get(index);11 //if (poi.hasCaterDetails) {

12 mPoiSearch.searchPoiDetail((newPoiDetailSearchOption())13 .poiUid(poi.uid));14 //}

15 return true;16 }17 }

1 /**

2 * 对周边检索的范围进行绘制3 *@paramcenter4 *@paramradius5 */

6 public void showNearbyArea( LatLng center, intradius) {7 16 }

8.将下面两个成员变量加入成员位置

LatLng center = null;

int radius = 5000;

并且,在 定位SDK监听函数MyLocationListenner中if判断后,实例化center,如下

@Overridepublic voidonReceiveLocation(BDLocation location) {//map view 销毁后不在处理新接收的位置

if (location == null || mMapView == null) {return;

}

center= new LatLng(location.getLatitude(),location.getLongitude());

9.找到自定义的输入框和按钮,监听

1     etsearch =(EditText) findViewById(R.id.etsearch);2 Button btnsearch =(Button) findViewById(R.id.btnsearch);3 btnsearch.setOnClickListener(newView.OnClickListener() {4 @Override5 public voidonClick(View v) {6 PoiNearbySearchOption nearbySearchOption = newPoiNearbySearchOption().keyword(etsearch.getText()7 .toString()).sortType(PoiSortType.distance_from_near_to_far).location(center)8 .radius(radius).pageNum(10);9 mPoiSearch.searchNearby(nearbySearchOption);10 }11 });

以上,即可实现搜索功能

096500acfb6255a09c221bd774cfc50e.png

原文:http://www.cnblogs.com/dhr125/p/5970983.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值