首先导入依赖:
首次导入依赖的过程可能有点慢
implementation 'com.amap.api:search:latest.integration'//搜索
然后在需要用到逆地理编码的类或弹窗或其他地方中实现GeocodeSearch.OnGeocodeSearchListener
监听
例子:
implements GeocodeSearch.OnGeocodeSearchListener
并实现其两个方法:
@Override
public void onRegeocodeSearched(RegeocodeResult regeocodeResult, int i) {
if (tvLocation != null && regeocodeResult != null) {
//常规写法: regeocodeResult.getRegeocodeAddress().getFormatAddress()
tvLocation.setText("位置:" + regeocodeResult.getRegeocodeAddress().getFormatAddress());
}
}
@Override
public void onGeocodeSearched(GeocodeResult geocodeResult, int i) {
geocodeResult.getGeocodeAddressList().get(0).getLatLonPoint();
}
通过经纬度逆地理编码得到位置核心编码
//通过经纬度逆地理编码得到位置
GeocodeSearch geocodeSearch = new GeocodeSearch(mContext);
geocodeSearch.setOnGeocodeSearchListener(this);
LatLonPoint latLng = new LatLonPoint(listBean.getLatitude(), listBean.getLongitude());
//第一个参数表示一个Latlng,第二参数表示范围多少米,第三个参数表示是火系坐标系还是GPS原生坐标系
RegeocodeQuery query = new RegeocodeQuery(latLng, 200, GeocodeSearch.AMAP);
geocodeSearch.getFromLocationAsyn(query);
这样我们就可以实现通过经纬度得到一个位置信息了
福利赠送~~~
地理编码(位置转坐标)
1、继承 OnGeocodeSearchListener 监听。
2、构造 GeocodeSearch 对象,并设置监听。
geocoderSearch = new GeocodeSearch(this);
geocoderSearch.setOnGeocodeSearchListener(this);
3、通过 GeocodeQuery(java.lang.String locationName, java.lang.String city) 设置查询参数,调用 GeocodeSearch 的 getFromLocationNameAsyn(GeocodeQuery geocodeQuery) 方法发起请求。
// name表示地址,第二个参数表示查询城市,中文或者中文全拼,citycode、adcode
GeocodeQuery query = new GeocodeQuery(name, "010");
geocoderSearch.getFromLocationNameAsyn(query);
4、通过回调接口 onGeocodeSearched 解析返回的结果。
说明:
1)可以在回调中解析result,获取坐标信息。
2)返回结果成功或者失败的响应码。1000为成功,其他为失败(详细信息参见网站开发指南-实用工具-错误码对照表)
@Override
public void onGeocodeSearched(GeocodeResult result, int rCode) {
//解析result获取坐标信息
}