最近公司的项目修改用户的地址用到了高德地图的周边搜索和滑动地图获取滑动轨迹上的经纬度的功能。
首先说下周边搜索,其实周边搜索和关键字搜索的用法是差不多的,只是多了一步而已。
1. 利用高德地位功能获取一个经纬度和城市。
2.
private PoiSearch mPoiSearch;
private PoiSearch.Query mQuery;
private PoiRecult mPoiResult;
private List
private String mCity;
Context mContext;
AMap mAMap;
MapView mMapView;
private void initSearch(doule mLat,double mLng){
mQuery=new PoiSearch.Query(" "," ",mCity);//第一个参数是关键字,周边搜索不用写,第二个参数是搜索的类型,可以选择官网提供的类型,
//也可以不填,默认餐饮服务,商务住宅,生活服务3类,第三个参数是城市或者城市区号
mQuery.setPageSize(30);//每页返回30条信息
mQuery.setPageNum(0);//查看第一页
mPoiSearch=new PoiSearch(mContext,mQuery);
mPoiSearch.setOnPoiSearchListener(this);
mPoiSearch.setBound(new PoiSearch.SearchBound(new LatLngPoint(mLat,mLng),1000,true));
mPoiSearch.searchPOIAsyn();
}
//周边搜索重写的两个方法
public void onPoiSearched(PoiReSult result,int rCode){
if(rCode==1000){
mPoiRecult=result;
mPoiItemList=mPoiResult.getPois();
Log.i("info","========mPoiItemList====="+mPoiItemList.toString);
}
}
public void onPoiItemSearched(PoiItem poiItem,int rCode){
}
写完了周边搜索,我们开始写高德地图滑动过程中地图中心经纬度的移动情况,需要实现这个功能,只需要执行一个监听方法就OK了。
初始化地图之后设置onCaneraChangeListener();方法就可以了;
private void initMap(){
if(mAMap==null){
mAMap=mMapView,getMap();
}
mAMap.setOnCameraChangeListener(this);//设置监听方法
}
public void onCameraChange(CameraPosition position){
LatLng changeTarget=position.gettarget;
Log.i("info","====滑动过程中经过的所有经纬度==="+changeTarget.toString);
}
public void onCameraChangeFinish(CameraPosition position){
LatLng finishTarget=position.gettarget;
Log.i("info","====滑动结束时地图中心点的经纬度==="+finishTarget.toString);
initSearch(finishTarget.latitude,finishTarget.longitude);}
好了这样就实现了滑动地图改变地图中心的经纬度再进行周边搜素的功能。
需要效果图的可以去看看美团外卖设置新增收货地址的页面。