最近项目要集成高德地图,然后可以根据语音输入指令,进行定位和地理编码搜索功能,从而实现获取当前位置经纬度和根据地址获取经纬度的功能

下载文件之只放了libs和主要代码文件

https://download.csdn.net/download/qq_38355313/10352613

第一步 首先,得集成高德地图:(可看木子的高德地图集成)

https://blog.csdn.net/qq_38355313/article/details/79951300

第二步 封装

1.初始化参数

   /*** 初始化定位** @author lzx* @since 2018年4月11日 15:38:31*/private void initLocation() {//初始化clientlocationClient = new AMapLocationClient(context);locationOption = getDefaultOption();//设置定位参数geocoderSearch = new GeocodeSearch(context);locationClient.setLocationOption(locationOption);// 设置定位监听locationClient.setLocationListener(locationListener);//初始化搜索相关geocoderSearch.setOnGeocodeSearchListener(geocodeSearchListener);progDialog = new ProgressDialog(context);}****************************************************************/*** 默认的定位参数** @author hongming.wang* @since 2.8.0*/private AMapLocationClientOption getDefaultOption() {AMapLocationClientOption mOption = new AMapLocationClientOption();mOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);//可选,设置定位模式,可选的模式有高精度、仅设备、仅网络。默认为高精度模式mOption.setGpsFirst(true);//可选,设置是否gps优先,只在高精度模式下有效。默认关闭mOption.setHttpTimeOut(30000);//可选,设置网络请求超时时间。默认为30秒。在仅设备模式下无效mOption.setInterval(3000);//可选,设置定位间隔。默认为2秒mOption.setNeedAddress(true);//可选,设置是否返回逆地理地址信息。默认是truemOption.setOnceLocation(true);//可选,设置是否单次定位。默认是falsemOption.setOnceLocationLatest(false);//可选,设置是否等待wifi刷新,默认为false.如果设置为true,会自动变为单次定位,持续定位时不要使用AMapLocationClientOption.setLocationProtocol(AMapLocationClientOption.AMapLocationProtocol.HTTP);//可选, 设置网络请求的协议。可选HTTP或者HTTPS。默认为HTTPmOption.setSensorEnable(true);//可选,设置是否使用传感器。默认是falsemOption.setWifiScan(true); //可选,设置是否开启wifi扫描。默认为true,如果设置为false会同时停止主动刷新,停止以后完全依赖于系统刷新,定位位置可能存在误差mOption.setLocationCacheEnable(true); //可选,设置是否使用缓存定位,默认为truereturn mOption;}

2.设置定位、地理编码回调(处理结果)

 /*** 定位监听*/AMapLocationListener locationListener = new AMapLocationListener() {@Overridepublic void onLocationChanged(AMapLocation location) {if (null != location) {StringBuffer sb = new StringBuffer();//errCode等于0代表定位成功,其他的为定位失败,具体的可以参照官网定位错误码说明if (location.getErrorCode() == 0) {sb.append("定位成功" + "\n");sb.append("定位类型: " + location.getLocationType() + "\n");sb.append("经    度    : " + location.getLongitude() + "\n");sb.append("纬    度    : " + location.getLatitude() + "\n");sb.append("精    度    : " + location.getAccuracy() + "米" + "\n");sb.append("提供者    : " + location.getProvider() + "\n");sb.append("速    度    : " + location.getSpeed() + "米/秒" + "\n");sb.append("角    度    : " + location.getBearing() + "\n");// 获取当前提供定位服务的卫星个数sb.append("星    数    : " + location.getSatellites() + "\n");sb.append("国    家    : " + location.getCountry() + "\n");sb.append("省            : " + location.getProvince() + "\n");sb.append("市            : " + location.getCity() + "\n");sb.append("城市编码 : " + location.getCityCode() + "\n");sb.append("区            : " + location.getDistrict() + "\n");sb.append("区域 码   : " + location.getAdCode() + "\n");sb.append("地    址    : " + location.getAddress() + "\n");sb.append("兴趣点    : " + location.getPoiName() + "\n");//定位完成的时间sb.append("定位时间: " + Utils.formatUTC(location.getTime(), "yyyy-MM-dd HH:mm:ss") + "\n");//返回结果if (locationLatlng != null) {locationLatlng.locatinmLatlng(new LatLng(location.getLatitude(), location.getLongitude()), location.getAddress());}} else {//定位失败sb.append("定位失败" + "\n");sb.append("错误码:" + location.getErrorCode() + "\n");sb.append("错误信息:" + location.getErrorInfo() + "\n");sb.append("错误描述:" + location.getLocationDetail() + "\n");}sb.append("***定位质量报告***").append("\n");sb.append("* WIFI开关:").append(location.getLocationQualityReport().isWifiAble() ? "开启" : "关闭").append("\n");sb.append("* GPS状态:").append(getGPSStatusString(location.getLocationQualityReport().getGPSStatus())).append("\n");sb.append("* GPS星数:").append(location.getLocationQualityReport().getGPSSatellites()).append("\n");sb.append("****************").append("\n");//定位之后的回调时间sb.append("回调时间: " + Utils.formatUTC(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss") + "\n");//解析定位结果,String result = sb.toString();Log.e("LocationServer", result);} else {}}};
*******************************************************
/*** 地址编译监听*/GeocodeSearch.OnGeocodeSearchListener geocodeSearchListener = new GeocodeSearch.OnGeocodeSearchListener() {@Overridepublic void onRegeocodeSearched(RegeocodeResult regeocodeResult, int i) {}@Overridepublic void onGeocodeSearched(GeocodeResult result, int rCode) {dismissDialog();if (rCode == AMapException.CODE_AMAP_SUCCESS) {if (result != null && result.getGeocodeAddressList() != null&& result.getGeocodeAddressList().size() > 0) {GeocodeAddress address = result.getGeocodeAddressList().get(0);//TODO 回调结果locationLatlng.searchResult(new LatLng(address.getLatLonPoint().getLatitude(), address.getLatLonPoint().getLongitude()));} else {//TODO 无结果}} else {//错误码}}};

3.编写接口回调结果

   public interface LocationLatlng {//返回定位结果void locatinmLatlng(LatLng latLng, String address);void searchResult(LatLng latLng);}//返回搜索结果public void setLocationLatlng(LocationLatlng locationLatlng) {this.locationLatlng = locationLatlng;}private LocationLatlng locationLatlng;**********************************************************//回调
if (locationLatlng != null) {locationLatlng.locatinmLatlng(new LatLng(location.getLatitude(), location.getLongitude()), location.getAddress());}//回调locationLatlng.searchResult(new LatLng(address.getLatLonPoint().getLatitude(), address.getLatLonPoint().getLongitude()));

4.activity中使用

    //地图相关工具private AMapUtil locationUtil;locationUtil = new AMapUtil(this);//设置监听处理回调结果locationUtil.setLocationLatlng(new AMapUtil.LocationLatlng() {@Overridepublic void locatinmLatlng(LatLng latLng, String address) {//定位结果的回调mLocationFragment.moveToPosition(latLng);Log.d("nxm", "locatinmLatlng: " + latLng.latitude + ":" + latLng.longitude);mStartLatlng_latitude = latLng.latitude;mStartLatlng_longitude = latLng.longitude;}@Overridepublic void searchResult(LatLng latLng) {//地理编码的回调结果mLocationFragment.moveToPosition(latLng);mEndLatlng_latitude = latLng.latitude;mEndLatlng_longitude = latLng.longitude;Log.d("nxm", "locatinmLatlng: " + latLng.latitude + ":" + latLng.longitude);}});
*****************************************

高德地图 SDK集成 定位 地理编码 搜索 经纬度获取 功能工具类相关推荐

  1. 高德地图--SDK集成--定位功能 地图定位搜索

    最近项目需要到高德定图定位,就此记录下简单集成思路 下载文件之只放了libs和主要代码文件 https://download.csdn.net/download/qq_38355313/1035261 ...

  2. 高德地图API-地理/逆地理编码开发

    1.应用场景 ● 地理编码:将详细的结构化地址转换为高德经纬度坐标.且支持对地标性名胜景区.建筑物名称解析为高德经纬度坐标. 结构化地址举例:北京市朝阳区阜通东大街6号转换后经纬度:116.48088 ...

  3. Android开发-使用高德地图SDK实现仿钉钉打卡的功能

    前 言 LBS(基于地理位置服务)是当前移动互联网大部分应用不可或缺的功能,基于地理位置服务的Android平台的开发是主要用于Android系统作为载体,我们可以利用定位出的位置进行许多丰富多彩的操 ...

  4. 高德地图报错USERKEY_PLAT_NOMATCH解决办法 + 通过经纬度获取当前位置

    一.场景 我希望通过一个按钮能获取到当前的位置信息. 比如说街道.周围的地标啥的- 二.编写代码.执行.并发现问题 1.通过 js获取到经纬度, 2.通过高德地图api提供的地理逆解析获取到相关信息: ...

  5. 高德地图-web端根据地理编码和逆地理编码

    首先,用地址生成器快速生成一张地图,网址为lbs.amap.com/console/show/tools: <!DOCTYPE html> <html> <head> ...

  6. uni-app接入高德地图SDK实现定位用户城市

    参考文章:http://ask.dcloud.net.cn/article/35070 本文以高德微信小程序 SDK 为例,简述如何在 uni-app 中利用微信小程序第三方 SDK,实现 App 端 ...

  7. android 高德地图sdk连续定位,高德地图实战:后台持续定位实现

    public class LocationService extends Service { private static final String TAG = "LocationServi ...

  8. Android中集成高德地图SDK实现地图定位和导航功能(二)

    我们接着上一篇文章开始继续实现android中集成高德地图的SDK实现地图 定位,搜索,导航的功能 如何让地图在手机上实现呢? 1.配置AndroidManifest 中的权限申请 可以参考官方文档 ...

  9. Android中集成高德地图SDK实现地图定位和导航功能(一)

    一.前期准备工作 1.在高德地图开发者平创建一个自己的项目 名称和应用类型随便填 2.添加Key 1.添加key 2.获取SHA1值 2.1.使用windwos+R 输入cmd 打开控制窗口 输入 w ...

最新文章

  1. Redis6.0新版本开始引入多线程,到底改善了什么
  2. Python SSH爆破以及Python3线程池控制线程数
  3. 专访阿里云域名与网站业务总经理宋瑛桥:域名未来将更加个性化、生态化和规范化...
  4. wordpress 首页调用文章 不同样式的方法
  5. 八十四、搜索框动画效果实现,React-Redux 进行应用数据的管理
  6. 03-instancing 工程分析详解
  7. spring AOP源码分析(一)
  8. Kubernetes - - k8s - v1.12.3 OpenLDAP统一认证
  9. 前端学习(3088):vue+element今日头条管理-关于接口的使用(有声版)
  10. 【转】React Vue MVC MVVM MVP
  11. CNG 关于 Key 相关的操作
  12. 树莓派Java程序运行_树莓派上Java程序作为linux服务并开机自动启动
  13. SAP License:FM-基金管理详解(实例)
  14. 使用app loader上传iOS应用
  15. mfc combo box 控件使用方法总结
  16. 安卓系统组态软件_第六代组态软件夸平台支持苹果安卓手机APP智能控制PLC
  17. 飞机大战项目(源代码(直接用),有效果图,素材包)
  18. Tensorflow2 model.compile()理解
  19. 基于STM32的ESP8266天气时钟(2)--------MCU获取天气数据
  20. win10系统设置webp文件默认用照片查看器打开的两种方法

热门文章

  1. iphone11右上角信号显示_原来,iOS 11移动信号图标里竟然隐藏着 iPhone 8的巨大秘密...
  2. 企业业务架构设计方法论及实践(二)
  3. android集合方法,android中intent传递list或者对象的方法
  4. 编程之路第11天:解决此前截屏权限需要手动点击确认问题(打开双线程)
  5. 一个简单的storyboard示例,其中关于添加navigation的部分可以学习,此前没用过
  6. MOOC编程题#2: 魔兽世界之二:装备
  7. 股票期货量化数据文档大全覆盖国内6大交易的史数据和实时行情
  8. (转)tensorflow入门教程(二十六)人脸识别(上)
  9. 码农在使用人脸识别开发套件中的硬件主板如何调用底层接口步骤
  10. 使用无线WIFI模块NodeMCU Lua V3物联网开发板8266-01/01S 在Arduino搭建环境到点亮一个LED灯