下载高德地图依赖库和相关注册方式,请查看高德开发者网站:http://lbs.amap.com/api/android-sdk/summary  点击打开链接

高德地图坐标拾取器:http://lbs.amap.com/console/show/picker   点击打开链接

 使用 keytool(jdk自带工具)获取SHA1

,按照如下步骤进行操作:

1.运行进入控制台。

2.在弹出的控制台窗口中输入 cd .android 定位到 .android 文件夹。

3.继续在控制台输入命令。

debug.keystore:命令为:keytool -list -v -keystore debug.keystore

自定义的 keystore:命令为:keytool -list -v -keystore apk的keystore

如下所示:

提示输入密钥库密码,编译器提供的debug keystore默认密码是 android,自定义签名文件的密码请自行填写。输入密钥后回车(如果没设置密码,可直接回车),此时可在控制台显示的信息中获取 SHA1 值,如下图所示:

说明:keystore 文件为 Android 签名证书文件。

 

  1. package com.example.lenovo.mydemoapp;
  2. import android.content.Intent;
  3. import android.graphics.Point;
  4. import android.os.PersistableBundle;
  5. import android.support.annotation.Nullable;
  6. import android.support.v7.app.AppCompatActivity;
  7. import android.os.Bundle;
  8. import android.util.Log;
  9. import android.view.View;
  10. import android.view.ViewGroup;
  11. import android.widget.SeekBar;
  12. import android.widget.TextView;
  13. import android.widget.Toast;
  14. import com.amap.api.location.AMapLocation;
  15. import com.amap.api.location.AMapLocationClient;
  16. import com.amap.api.location.AMapLocationClientOption;
  17. import com.amap.api.location.AMapLocationListener;
  18. import com.amap.api.maps.AMap;
  19. import com.amap.api.maps.AMapUtils;
  20. import com.amap.api.maps.CameraUpdateFactory;
  21. import com.amap.api.maps.LocationSource;
  22. import com.amap.api.maps.MapView;
  23. import com.amap.api.maps.UiSettings;
  24. import com.amap.api.maps.model.CameraPosition;
  25. import com.amap.api.maps.model.LatLng;
  26. import java.text.SimpleDateFormat;
  27. import java.util.Date;
  28. /*
  29. name:编辑安全区
  30. time:2018-06-09 11:32:22
  31. Can Enter:1.安全区信息确认 SafeAreaConfirmation
  32. return:1.高德地图的经纬度坐标值 2.围栏的半径大小
  33. returnActivity:1.安全区
  34. */
  35. // LocationSource 定位按键的监听接口
  36. public class EditSafeArea extends AppCompatActivity implements LocationSource,AMap.OnCameraChangeListener,AMapLocationListener {
  37. private SeekBar mSeekBar ;
  38. //半径显示的文本View
  39. private TextView mRadiusValue;
  40. private View mEditSafeAreaMapFence;
  41. //下一步
  42. private TextView mEditSafeAreaTheNextStepText;
  43. //aMap 地图对象
  44. private AMap aMap;
  45. //地图视图
  46. private MapView mapView;
  47. //声明AMapLocationClient 地图位置客户端 对象,定位发起端
  48. private AMapLocationClient mLocationClient = null;
  49. //声明mLocationOption 地图位置客户端选项 对象,定位参数 `
  50. public AMapLocationClientOption mLocationOption = null;
  51. //声明mListener对象,定位监听器
  52. private OnLocationChangedListener mListener = null;
  53. //标识,用于判断是否只显示一次定位信息和用户重新定位
  54. private boolean isFirstLoc = true;
  55. private AMapLocation aMapLocation ;
  56. private int mRadius;
  57. private LatLng mLatlng;
  58. private final String LATITUDE_KEY = "latitude_value";
  59. private final String LONGITUDE_KEY = "longitude_value";
  60. private final String RADIUS_KEY = "radius_value";
  61. @Override
  62. protected void onCreate(Bundle savedInstanceState) {
  63. super.onCreate(savedInstanceState);
  64. setContentView(R.layout.edit_safe_area);
  65. //围栏
  66. mEditSafeAreaMapFence = (View)findViewById(R.id.EditSafeArea_MapFence);
  67. //拖动条
  68. mSeekBar = (SeekBar)findViewById(R.id.EditSafeArea_SeekBar);
  69. //半径显示文本
  70. mRadiusValue = (TextView)findViewById(R.id.EditSafeArea_radius_value);
  71. //下一步
  72. mEditSafeAreaTheNextStepText = (TextView)findViewById(R.id.EditSafeArea_TheNextStep_text);
  73. //获取地图控件
  74. mapView = (MapView)findViewById(R.id.EditSafeArea_MapView);
  75. //在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),实现地图生命周期管理
  76. mapView.onCreate(savedInstanceState);
  77. if(aMap == null){
  78. //创建地图对象
  79. aMap = mapView.getMap();
  80. //创建UI设置器
  81. UiSettings settings = aMap.getUiSettings();
  82. //地点变化监听器
  83. aMap.setLocationSource(this);
  84. //当前镜头变化监听器
  85. aMap.setOnCameraChangeListener(this);
  86. // 是否显示定位按钮
  87. settings.setMyLocationButtonEnabled(true);
  88. //定位图标是否可以点击
  89. aMap.setMyLocationEnabled(true);
  90. }
  91. //开始定位
  92. location();
  93. //设置拖动条默认值
  94. mSeekBar.setProgress(0);
  95. //设置拖动条默认值的显示 ,因为默认是400 所以这里添加400
  96. mRadiusValue.setText(Integer.toString(mSeekBar.getProgress()+400));
  97. //显示默认围栏的大小
  98. mEditSafeAreaMapFence.setLayoutParams(setFence());
  99. //拖动条监听
  100. mSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
  101. @Override
  102. public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
  103. //拖动条拖动后更新文本值
  104. mRadiusValue.setText(Integer.toString(progress+400));
  105. //更新围栏的范围
  106. mEditSafeAreaMapFence.setLayoutParams(setFence());
  107. }
  108. @Override
  109. public void onStartTrackingTouch(SeekBar seekBar) {
  110. }
  111. @Override
  112. public void onStopTrackingTouch(SeekBar seekBar) {
  113. }
  114. });
  115. //下一步监听
  116. mEditSafeAreaTheNextStepText.setOnClickListener(new View.OnClickListener() {
  117. @Override
  118. public void onClick(View v) {
  119. Intent intent = new Intent(EditSafeArea.this,SafeAreaConfirmation.class);
  120. if(mLatlng == null || mLatlng == null || mRadius == 0 ){
  121. Toast.makeText(EditSafeArea.this,"没有定位成功",Toast.LENGTH_SHORT).show();
  122. }else {
  123. intent.putExtra(LATITUDE_KEY,mLatlng.latitude);
  124. intent.putExtra(LONGITUDE_KEY,mLatlng.longitude);
  125. intent.putExtra(RADIUS_KEY,mRadius);
  126. Log.e("EditSafeArea","传出的mLatlng是:"+mLatlng.latitude);
  127. Log.e("EditSafeArea","传出的longitude是:"+mLatlng.longitude);
  128. Log.e("EditSafeArea","传出的半径值是:"+mRadius);
  129. startActivity(intent);
  130. }
  131. }
  132. });
  133. }
  134. private void location() {
  135. //初始化定位
  136. mLocationClient = new AMapLocationClient(getApplicationContext());
  137. //设置定位按键的监听
  138. mLocationClient.setLocationListener(this);
  139. //初始化定位参数 mLocationOption 定位的参数设置
  140. mLocationOption = new AMapLocationClientOption();
  141. //设置定位模式为Hight_Accuracy高精度模式,Battery_Saving为低功耗模式,Device_Sensors是仅设备模式
  142. mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
  143. //设置是否返回地址信息(默认返回地址信息)
  144. mLocationOption.setNeedAddress(true);
  145. //设置是否只定位一次,默认为false
  146. mLocationOption.setOnceLocation(true);
  147. //设置是否强制刷新WIFI,默认为强制刷新
  148. mLocationOption.setWifiActiveScan(true);
  149. //设置是否允许模拟位置,默认为false,不允许模拟位置
  150. mLocationOption.setMockEnable(false);
  151. //设置定位间隔,单位毫秒,默认为2000ms
  152. mLocationOption.setInterval(5000);
  153. //给定位客户端对象设置定位参数
  154. mLocationClient.setLocationOption(mLocationOption);
  155. //启动定位
  156. mLocationClient.startLocation();
  157. }
  158. //因为地图的生命周期管理必须要与活动的生命周期管理捆绑,所以必须重写方法
  159. @Override
  160. protected void onDestroy() {
  161. super.onDestroy();
  162. mLocationClient.stopLocation();//停止定位
  163. mLocationClient.onDestroy();//销毁地图
  164. }
  165. //必须重写的方法
  166. @Override
  167. protected void onResume() {
  168. super.onResume();
  169. //重新恢复地图
  170. mapView.onResume();
  171. }
  172. //必须重写的方法
  173. @Override
  174. protected void onPause() {
  175. super.onPause();
  176. //暂停地图
  177. mapView.onPause();
  178. }
  179. //必须重写的方法
  180. @Override
  181. public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
  182. super.onSaveInstanceState(outState, outPersistentState);
  183. mapView.onSaveInstanceState(outState);
  184. }
  185. /*
  186. 定位参数回调 这个方法还有一个属性:如果之前已经定位了,并且添加了定位图标,那么每次手动点击定位按键回调这个方法
  187. ,就会在地图上执行一次自动回到定位点上
  188. */
  189. @Override
  190. public void onLocationChanged(AMapLocation aMapLocation) {
  191. this.aMapLocation = aMapLocation;
  192. if (aMapLocation != null) {
  193. if (aMapLocation.getErrorCode() == 0) {
  194. //定位成功回调信息,设置相关消息
  195. aMapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见官方定位类型表
  196. aMapLocation.getLatitude();//获取纬度
  197. aMapLocation.getLongitude();//获取经度
  198. aMapLocation.getAccuracy();//获取精度信息
  199. SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  200. Date date = new Date(aMapLocation.getTime());
  201. df.format(date);//定位时间
  202. aMapLocation.getAddress();//地址,如果option中设置isNeedAddress为false,则没有此结果,网络定位结果中会有地址信息,GPS定位不返回地址信息。
  203. aMapLocation.getCountry();//国家信息
  204. aMapLocation.getProvince();//省信息
  205. aMapLocation.getCity();//城市信息
  206. aMapLocation.getDistrict();//城区信息
  207. aMapLocation.getStreet();//街道信息
  208. aMapLocation.getStreetNum();//街道门牌号信息
  209. aMapLocation.getCityCode();//城市编码
  210. aMapLocation.getAdCode();//地区编码
  211. LatLng latLng = new LatLng(aMapLocation.getLatitude(),aMapLocation.getLongitude());
  212. if (isFirstLoc) {
  213. //设置缩放级别 moveCamera 移动相机 CameraUpdateFactory 相机更新制作 zoomBy 放大
  214. aMap.moveCamera(CameraUpdateFactory.zoomTo(17));
  215. //将地图移动到定位点,仅仅是将地图位置移动到定位点
  216. aMap.moveCamera(CameraUpdateFactory.changeLatLng(new LatLng(aMapLocation.getLatitude(), aMapLocation.getLongitude())));
  217. //获取定位信息
  218. StringBuffer buffer = new StringBuffer();
  219. buffer.append(aMapLocation.getCountry() + ""
  220. + aMapLocation.getProvince() + ""
  221. + aMapLocation.getCity() + ""
  222. + aMapLocation.getProvince() + ""
  223. + aMapLocation.getDistrict() + ""
  224. + aMapLocation.getStreet() + ""
  225. + aMapLocation.getStreetNum());
  226. Toast.makeText(getApplicationContext(), buffer.toString(), Toast.LENGTH_LONG).show();
  227. isFirstLoc = false;
  228. Log.e("EditSafeArea","定位后的布尔值:"+isFirstLoc);
  229. }
  230. } else {
  231. //显示错误信息ErrCode是错误码,errInfo是错误信息,详见错误码表。
  232. Log.e("AmapError", "location Error, ErrCode:"
  233. + aMapLocation.getErrorCode() + ", errInfo:"
  234. + aMapLocation.getErrorInfo());
  235. Toast.makeText(getApplicationContext(), "定位失败", Toast.LENGTH_LONG).show();
  236. }
  237. }
  238. }
  239. //定位按键启动 ,点击后此处会重新运行一次定位和定位回调 并且返回定位回调
  240. @Override
  241. public void activate(OnLocationChangedListener onLocationChangedListener) {
  242. Log.e("EditSafeArea","定位按键启动");
  243. //监听 onLocationChangedListener 定位位置变化监听器
  244. aMap.clear();
  245. aMap.moveCamera(CameraUpdateFactory.changeLatLng(new LatLng(aMapLocation.getLatitude(), aMapLocation.getLongitude())));
  246. mListener = onLocationChangedListener;
  247. }
  248. //定位按键完成关闭后回调的方法
  249. @Override
  250. public void deactivate() {
  251. mListener = null;
  252. }
  253. //地图镜头有动的情况下回调
  254. @Override
  255. public void onCameraChange(CameraPosition cameraPosition) {
  256. mLatlng = cameraPosition.target;
  257. mEditSafeAreaMapFence.setLayoutParams(setFence());
  258. }
  259. //地图镜头不动的回调
  260. @Override
  261. public void onCameraChangeFinish(CameraPosition cameraPosition) {
  262. mLatlng = cameraPosition.target;
  263. LatLng latLng = cameraPosition.target;
  264. }
  265. //设置围栏的方法
  266. public ViewGroup.LayoutParams setFence(){
  267. mRadius = Integer.parseInt(mRadiusValue.getText().toString());
  268. //得到手机屏幕上的一个坐标
  269. Point point = new Point();
  270. point.x = 0;
  271. point.y = 0;
  272. //得到手机屏幕上的另外一个坐标
  273. Point point1 = new Point();
  274. point1.x = 0;
  275. point1.y = 200;
  276. //根据坐标获取地图上对应经纬
  277. LatLng latLng = aMap.getProjection().fromScreenLocation(point);
  278. LatLng latLng1 = aMap.getProjection().fromScreenLocation(point1);
  279. Log.e("EditSafeArea","latLng_latitude:"+latLng.latitude+"latLng_longitude:"+latLng.longitude);
  280. Log.e("EditSafeArea","latLng1_latitude:"+latLng1.latitude+"latLng1_longitude:"+latLng1.longitude);
  281. //根据2组经纬度计算之间的直线长度,单位是米
  282. float distance = AMapUtils.calculateLineDistance(latLng,latLng1);
  283. Log.e("EditSafeArea","distance:"+distance);
  284. //创建布局参数
  285. ViewGroup.LayoutParams layoutParams;
  286. layoutParams = mEditSafeAreaMapFence.getLayoutParams();
  287. //根据比例计算出围栏需要对应的大小
  288. int d = (int)(200 * mRadius / distance);
  289. //导入大小值 加200是为了在 安全区信息确认 的围栏大小显示统一,安全区信息确认的围栏大小显示是准确值
  290. layoutParams.width = d+200;
  291. layoutParams.height = d+200;
  292. return layoutParams;
  293. }
  294. }

 

  1.  
  1. package com.example.lenovo.mydemoapp;
  2. import android.content.Intent;
  3. import android.graphics.Color;
  4. import android.os.PersistableBundle;
  5. import android.support.v7.app.AppCompatActivity;
  6. import android.os.Bundle;
  7. import android.util.Log;
  8. import android.view.View;
  9. import android.widget.Button;
  10. import android.widget.EditText;
  11. import android.widget.Toast;
  12. import com.amap.api.location.AMapLocationClient;
  13. import com.amap.api.location.AMapLocationClientOption;
  14. import com.amap.api.location.AMapLocationListener;
  15. import com.amap.api.maps.AMap;
  16. import com.amap.api.maps.CameraUpdateFactory;
  17. import com.amap.api.maps.MapView;
  18. import com.amap.api.maps.UiSettings;
  19. import com.amap.api.maps.model.CameraPosition;
  20. import com.amap.api.maps.model.CircleOptions;
  21. import com.amap.api.maps.model.LatLng;
  22. /*
  23. name:安全区信息确认
  24. time:2018-06-09 11:32:22
  25. Can Enter:1.保存 (返回安全区SafePlace)
  26. return:1.高德地图坐标经纬度 2.围栏的半径 3.安全区名称
  27. returnActivity:SafePlace
  28. */
  29. public class SafeAreaConfirmation extends AppCompatActivity {
  30. private MapView mapView;
  31. private AMap aMap;
  32. private EditText mSafeAreaConfirmationEditText;
  33. private Button mSafeAreaConfirmationSave;
  34. //地图定位客户端 对象.定位发起端口
  35. private AMapLocationClient mLocationClient;
  36. // 地图位置客户端选项 对象,定位参数 `
  37. private AMapLocationClientOption mLocationOption;
  38. //
  39. private int mRadius ;
  40. private double mLatitude;
  41. private double mLongitude;
  42. //传入/传出值的key
  43. private final String LATITUDE_KEY = "latitude_value";
  44. private final String LONGITUDE_KEY = "longitude_value";
  45. private final String RADIUS_KEY = "radius_value";
  46. private final String NAME_KEY = "name_value";
  47. @Override
  48. protected void onCreate(Bundle savedInstanceState) {
  49. super.onCreate(savedInstanceState);
  50. setContentView(R.layout.activity_safe_area_confirmation);
  51. mSafeAreaConfirmationEditText = (EditText)findViewById(R.id.SafeAreaConfirmation_EditText);
  52. mSafeAreaConfirmationSave = (Button)findViewById(R.id.SafeAreaConfirmation_save);
  53. mapView = (MapView)findViewById(R.id.SafeAreaConfirmation_MapView);
  54. mapView.onCreate(savedInstanceState);
  55. if(aMap == null){
  56. aMap = mapView.getMap();
  57. UiSettings uiSettings = aMap.getUiSettings();
  58. //不显示定位按键
  59. uiSettings.setMyLocationButtonEnabled(false);
  60. //不显示缩放图标
  61. uiSettings.setZoomControlsEnabled(false);
  62. //设置为不可以使用缩放手势
  63. uiSettings.setZoomGesturesEnabled(false);
  64. //设置为不可以使用滑动手势
  65. uiSettings.setScrollGesturesEnabled(false);
  66. //设置为不可以使用旋转手势
  67. uiSettings.setRotateGesturesEnabled(false);
  68. //定位图标不可以点击
  69. aMap.setMyLocationEnabled(false);
  70. }
  71. location();
  72. displayFence();
  73. //保存按键点击事件
  74. mSafeAreaConfirmationSave.setOnClickListener(new View.OnClickListener() {
  75. @Override
  76. public void onClick(View v) {
  77. if (mSafeAreaConfirmationEditText.getText().toString().equals("")){
  78. Toast.makeText(SafeAreaConfirmation.this,"请输出安全区名称",Toast.LENGTH_SHORT).show();
  79. Log.e("SafeAreaConfirmation","文本框中的值是空的");
  80. }else {
  81. Log.e("SafeAreaConfirmation","文本框中的值是:"+mSafeAreaConfirmationEditText.getText().toString());
  82. Intent intent = new Intent(SafeAreaConfirmation.this,SafePlace.class);
  83. intent.putExtra(LATITUDE_KEY,mLatitude);
  84. intent.putExtra(LONGITUDE_KEY,mLongitude);
  85. intent.putExtra(RADIUS_KEY,mRadius);
  86. intent.putExtra(NAME_KEY,mSafeAreaConfirmationEditText.getText().toString());
  87. startActivity(intent);
  88. }
  89. }
  90. });
  91. }
  92. //因为地图的生命周期管理必须要与活动的生命周期管理捆绑,所以必须重写方法
  93. @Override
  94. protected void onDestroy() {
  95. super.onDestroy();
  96. mLocationClient.stopLocation();//停止定位
  97. mLocationClient.onDestroy();//销毁地图
  98. }
  99. //必须重写的方法
  100. @Override
  101. protected void onResume() {
  102. super.onResume();
  103. //重新恢复地图
  104. mapView.onResume();
  105. }
  106. //必须重写的方法
  107. @Override
  108. protected void onPause() {
  109. super.onPause();
  110. //暂停地图
  111. mapView.onPause();
  112. }
  113. //必须重写的方法
  114. @Override
  115. public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
  116. super.onSaveInstanceState(outState, outPersistentState);
  117. mapView.onSaveInstanceState(outState);
  118. }
  119. //初始化地图参数
  120. private void location() {
  121. //初始化定位
  122. mLocationClient = new AMapLocationClient(getApplicationContext());
  123. //初始化定位参数 mLocationOption 定位的参数设置
  124. mLocationOption = new AMapLocationClientOption();
  125. //设置定位模式为Hight_Accuracy高精度模式,Battery_Saving为低功耗模式,Device_Sensors是仅设备模式
  126. mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
  127. //设置是否只定位一次,默认为false
  128. mLocationOption.setOnceLocation(true);
  129. //设置是否强制刷新WIFI,默认为强制刷新
  130. mLocationOption.setWifiActiveScan(true);
  131. //设置是否允许模拟位置,默认为false,不允许模拟位置
  132. mLocationOption.setMockEnable(false);
  133. //设置定位间隔,单位毫秒,默认为2000ms
  134. mLocationOption.setInterval(5000);
  135. //给定位客户端对象设置定位参数
  136. mLocationClient.setLocationOption(mLocationOption);
  137. }
  138. //在地图中画围栏
  139. public void displayFence(){
  140. Intent intent = getIntent();
  141. mLatitude = intent.getDoubleExtra(LATITUDE_KEY,0);
  142. mLongitude = intent.getDoubleExtra(LONGITUDE_KEY,0);
  143. mRadius = intent.getIntExtra(RADIUS_KEY,0);
  144. //圆选项
  145. CircleOptions circleOptions = new CircleOptions();
  146. if(mLatitude != 0 && mLongitude != 0 && mRadius != 0){
  147. LatLng latLng = new LatLng(mLatitude,mLongitude);
  148. aMap.moveCamera(CameraUpdateFactory.changeLatLng(latLng));
  149. //设置地图放大显示级别
  150. if (mRadius < 200){
  151. aMap.moveCamera(CameraUpdateFactory.zoomTo(17));
  152. }else if(mRadius < 400){
  153. aMap.moveCamera(CameraUpdateFactory.zoomTo(16));
  154. }else if (mRadius < 700){
  155. aMap.moveCamera(CameraUpdateFactory.zoomTo(15));
  156. }else if (mRadius <= 1300){
  157. aMap.moveCamera(CameraUpdateFactory.zoomTo(14));
  158. }
  159. // 导入坐标
  160. circleOptions.center(latLng);
  161. // 设置半径
  162. Log.e("SafeAreaConfirmation","radius is:"+mRadius);
  163. circleOptions.radius(mRadius);
  164. // 设置画笔宽度
  165. circleOptions.strokeWidth(4);
  166. //画笔颜色
  167. circleOptions.strokeColor(Color.argb(255,0,140,237));
  168. //填色
  169. circleOptions.fillColor(Color.argb(50,99,184,255));
  170. aMap.addCircle(circleOptions);
  171. }else {
  172. Log.e("SafeAreaConfirmation","latitude and longitude and radius is empty");
  173. }
  174. }
  175. }

 

  1.  
  1. //设置地图标记
  2. public void addMapMark(int position){
  3. MarkerOptions markerOption = new MarkerOptions();
  4. markerOption.position(listData.getLatLng());
  5. markerOption.title(listData.getName());
  6. markerOption.draggable(false);
  7. Bitmap bt = BitmapFactory.decodeFile(listData.getFilePath());
  8. if(bt != null){
  9. markerOption.icon(BitmapDescriptorFactory.fromBitmap(BitmapFactory
  10. .decodeFile(listData.getFilePath())));
  11. }else {
  12. Log.e(TAG, "没有获取到头像,使用默认头像");
  13. markerOption.icon(BitmapDescriptorFactory.fromBitmap(BitmapFactory
  14. .decodeResource(getResources(),R.mipmap.default_avatar1)));
  15. }
  16. aMap.addMarker(markerOption);
  17. }

 

  1.  

首先要在class里接口:

  1. public class MainActivity extends BaseActivity implements GeocodeSearch.OnGeocodeSearchListener

然后传入坐标值

  1. /**
  2. * 得到地图地址信息
  3. * @param latLng 坐标值
  4. */
  5. public void getAddress(LatLng latLng){
  6. geocodeSearch = new GeocodeSearch(this);
  7. geocodeSearch.setOnGeocodeSearchListener(this);
  8. Log.e(TAG, "getAddress 坐标值:"+"latitude:" +latLng.latitude+"longitude:"+latLng.longitude);
  9. LatLonPoint latLonPoint = new LatLonPoint(latLng.latitude,latLng.longitude);
  10. RegeocodeQuery regeocodeQuery = new RegeocodeQuery(latLonPoint,200,GeocodeSearch.AMAP);//发生送坐标、范围、坐标系
  11. geocodeSearch.getFromLocationAsyn(regeocodeQuery);
  12. }

 

  1.  

获得坐标的地图地址文本回调

  1. @Override //根据坐标返回文本地址的回调接口
  2. public void onRegeocodeSearched(RegeocodeResult regeocodeResult, int i) {
  3. //1000 是高德官方指定的成功的回返码
  4. if( i == 1000){
  5. Log.e(TAG, "onRegeocodeSearched回调码i: "+i );
  6. RegeocodeAddress regeocodeAddress = regeocodeResult.getRegeocodeAddress();
  7. address = regeocodeAddress.getFormatAddress();
  8. Log.e(TAG, "onRegeocodeSearched地址: "+mAddress);
  9. mAddress.setText(address);
  10. }else {
  11. Log.e(TAG, "onRegeocodeSearched回调码i: "+i );
  12. }
  13. }
  14. @Override
  15. public void onGeocodeSearched(GeocodeResult geocodeResult, int i) {
  16. //根据地址返回坐标的回调,不用到
  17. }

 

  1.  

 

版权声明:本文为guanxinjing原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/guanxinjing/p/9708607.html