利用高德地图的API做了一个类似微信发送位置界面地址选择,界面就3个,一个选择地址(周边搜索),一个搜索界面(关键字搜索),最后将选择的地址信息返回主界面,效果图如下:

   

对于详细地址选择,在项目中难免会遇到,比如电商app,旅游app等等,下面简单讲解如何实现:

注册高德开发者账号,创建应用,获取AppId

1.创建应用过


红色※为必填项,其中 SHA1获取方式

确认随后得到appid

2.下载高德SDK:

高德SDK

二、地址位置选择

1.地址选择界面首先需要定位

private void InitLocation() {//初始化clientlocationClient = new AMapLocationClient(this.getApplicationContext());//设置定位参数locationClient.setLocationOption(getDefaultOption());// 设置定位监听locationClient.setLocationListener(locationListener);locationClient.startLocation();
}

2.定位结果回调

/*** 定位监听*/
AMapLocationListener locationListener = new AMapLocationListener() {@Overridepublic void onLocationChanged(AMapLocation loc) {if (null != loc) {//解析定位结果String city = loc.getCity();Log.e("yufs","當前经度"+loc.getLongitude()+"当前维度:"+loc.getLatitude());mLoc=loc;lp.setLongitude(loc.getLongitude());lp.setLatitude(loc.getLatitude());//得到定位信息Log.e("yufs","定位详细信息:"+loc.toString());mLatitude=loc.getLatitude();mLongitude=loc.getLongitude();//初始化地图对象initMap(loc);//查询周边doSearchQuery(loc.getCity(),loc.getLatitude(),loc.getLongitude());} else {Toast.makeText(LocationSelectActivity.this, "定位失败,请打开位置权限", Toast.LENGTH_SHORT).show();}}
};

3.定位成功回调中进行周边搜索


/*** 开始进行poi搜索*/
protected void doSearchQuery(String city,double latitude,double longitude) {String mType="汽车服务|汽车销售|汽车维修|摩托车服务|餐饮服务|购物服务|生活服务|体育休闲服务|医疗保健服务|住宿服务|风景名胜|商务住宅|政府机构及社会团体|科教文化服务|交通设施服务|金融保险服务|公司企业|道路附属设施|地名地址信息|公共设施";query = new PoiSearch.Query("", mType, city);// 第一个参数表示搜索字符串,第二个参数表示poi搜索类型,第三个参数表示poi搜索区域(空字符串代表全国)query.setPageSize(20);// 设置每页最多返回多少条poiitemquery.setPageNum(currentPage);// 设置查第一页if (lp != null) {poiSearch = new PoiSearch(this, query);poiSearch.setOnPoiSearchListener(this);//以当前定位的经纬度为准搜索周围5000米范围// 设置搜索区域为以lp点为圆心,其周围5000米范围poiSearch.setBound(new PoiSearch.SearchBound(new LatLonPoint(latitude,longitude), 1000, true));//poiSearch.searchPOIAsyn();// 异步搜索}
}

PoiSearch.SearchBound对象以某一中心点半径5000米的圆搜索结果,PoiSearch.Query()的如果第二个参数未填写会 默认返回“餐饮服务”、“商务住宅”、“生活服务”这三种类别的POI,代码中基本上把高德所有的搜索类型都返回了,你可以根据自己情况而定填写搜索类型


4.poi搜索结果回调监听,获取数据显示


PoiSearch.OnPoiSearchListener onPoiSearchListener = new PoiSearch.OnPoiSearchListener() {@Overridepublic void onPoiSearched(PoiResult result, int rCode) {if (rCode == 1000) {if (result != null && result.getQuery() != null) {// 搜索poi的结果if (result.getQuery().equals(poiQuery)) {// 是否是同一条lv_list.onLoadComplete();List<PoiItem> poiItems = result.getPois();// 取得第一页的poiitem数据,页数从数字0开始List<PoiBean> tem=new ArrayList<>();if (poiItems != null && poiItems.size() > 0) {for (int i = 0; i < poiItems.size(); i++) {PoiItem poiItem = poiItems.get(i);PoiBean bean=new PoiBean();bean.setTitleName(poiItem.getTitle());bean.setCityName(poiItem.getCityName());bean.setAd(poiItem.getAdName());bean.setSnippet(poiItem.getSnippet());bean.setPoint(poiItem.getLatLonPoint());Log.e("yufs",""+poiItem.getTitle()+","+poiItem.getProvinceName()+","+poiItem.getCityName()+","+poiItem.getAdName()+","//区+poiItem.getSnippet()+","+poiItem.getLatLonPoint()+"\n");tem.add(bean);}poiData.addAll(tem);mAdapter.notifyDataSetChanged();/* if (isSearch){moveMapCamera(poiItems.get(0).getLatLonPoint().getLatitude(),poiItems.get(0).getLatLonPoint().getLongitude());}*/}}}}}@Overridepublic void onPoiItemSearched(PoiItem poiItem, int i) {}
};

其中PoiItem对象为高德提供的一个poi实体类,可以查看返回的数据结构如下:


然后你也可以选择其中有用的信息封装自己的bean,比如我的PoiBean,获取有用的数据之后显示在列表上,到此第一页搞定


三、关键字搜索


protected void doSearchQuery(String keyWord) {if(currentPage==0) {savePoiItem.clear();ll_loading.setVisibility(View.VISIBLE);// 显示进度框lv_list.setVisibility(View.GONE);}query = new PoiSearch.Query(keyWord, "", "");// 第一个参数表示搜索字符串,第二个参数表示poi搜索类型,第三个参数表示poi搜索区域(空字符串代表全国)query.setPageSize(10);// 设置每页最多返回多少条poiitemquery.setPageNum(currentPage);// 设置查第一页query.setCityLimit(true);poiSearch = new PoiSearch(this, query);poiSearch.setOnPoiSearchListener(this);poiSearch.searchPOIAsyn();
}

同样调用刚才的搜索接口,只不过加上了关键字,去掉了搜索范围的限制,搜索回调接口同上,将搜索结果显示出来,然后搜索页面搞定(提醒:demo中使用自己在高德申请的Appkey,然后就可查看效果了)


最后附上源码地址:

下载地址

Android类似微信详细地址选择(高德地图)相关推荐

  1. uniapp:微信小程序使用高德地图进行坐标反解析获取详细地址

    开发过小程序的都了解,我们在调用 uni.getLocation Api的时候,在微信小程序端,只会返给我们一个坐标系,当前位置的经纬度,当我们需要去知道当前位置的详细地址时,我们就需要进行反解析来获 ...

  2. uni-app 中微信小程序使用高德地图等第三方 SDK的方法

    获取SDK 首先在高德开放平台,注册账号并且申请相关的 key 等信息: 然后下载它的微信小程序版 SDK:微信小程序 SDK 然后填写app包名,申请原生sdk的appkey信息,但不需要下载原生s ...

  3. 微信小程序 使用高德地图实现标点 图标修改

    微信小程序 引入高德地图 高德地图开放平台 根据入门指南完成前五步后 建议在app.js中引入 amap-wx.js 并初始化 高德地图 app.json // 引入路径 根据自己文件所在位置引入 v ...

  4. 微信小程序引入高德地图Demo 快速上手

    文章目录 前言 一.获取高德key 二.引入官方实例 总结 前言 本文参照官方文档进行编写 最后引入官方实例 最终效果 ` 一.获取高德key 注册账号 https://lbs.amap.com/?r ...

  5. 根据地址获得高德地图点标记

    如何根据地址获取该地址在高德地图上的点标记呢,跟我一起来看看吧. 一.在高德地图开发者平台申请一个key.点击http://lbs.amap.com进入高德开发平台.注册登录就不用说了.登入后在我的应 ...

  6. 微信小程序:高德地图在小程序中的实践(含静态地图)

    前言 前人栽树,后人乘凉.记录下工作的点点滴滴,让同道中人少走弯路~ 来看看需求和问题:房产相关的项目,详情中需要显示房源地址,底部要有固定的菜单(不是tabbar),房源数据过多,数据超过一屏时,m ...

  7. 南邮Android实验报告三:基于高德地图的综合应用

    实验三 基于高德地图的综合应用 一.目的要求 1.学会安卓应用中涉及位置服务时的解决方案. 2.练习在使用第三方插件时,遇到版本不兼容时的处理步骤和方法. 二.实验环境 1.硬件配置:Intel Co ...

  8. 微信小程序使用高德地图Web服务爬取企业数据

    高德地图Api官网:高德开放平台 | 高德地图API 一.高德地图使用说明 "POI2.0" 地点搜索服务2.0是一类Web API接口服务:服务提供多种场景的地点搜索能力,包括关 ...

  9. vue 微信公众号定位+高德地图

    遇到的坑,没有搞清楚this指向导致微信定位拿到的经纬度赋值给高德地图时,没有赋值成功. wxRegister() {var _this = thislet mapdata={url:location ...

最新文章

  1. 如何使用Extentions创建菜单
  2. python字典程序题_python字典练习题
  3. restTemplate使用和踩坑总结
  4. 彩虹系统怎么弄服务器,用云服务器彩虹挂机
  5. google android广告异步加载,谷歌广告异步代码和同步代码的解决方法
  6. 阿里敏捷教练:多团队开发一个产品的组织设计和思考
  7. mysql完成未完成_MYSQL SQL模式 (未完成)
  8. HikariDataSource 监控_Prometheus监控告警浅析
  9. 计算机怎样存储数值,(二)计算机如何保存字符和数字,并完成计算
  10. django学习遇到的问题解决方式
  11. 计算两个经纬度之间的距离
  12. [复习]Python基础回顾
  13. 威伦触摸屏脚本,宏指令
  14. python 海龟图
  15. 英文标题中的字母大写规则
  16. 【转载】浅的不能再浅的浅谈百利金单双胡及全字尖
  17. 【项目四】圆类Circle
  18. Web开发项目 # 2048小游戏
  19. 微信小程序视频上传组件直接上传至阿里云OSS
  20. 豪斯医生改名换姓上演《我的“钱”半生》?

热门文章

  1. oracle 将多列数据合并成一列显示
  2. html 阅读swf,网页嵌入式 HTML5+Flash(swf) 视频播放器
  3. 我的新书——《PHP程序员面试笔试宝典》
  4. benchmark TPC-H postgreSQL
  5. 计算机专业2017大学排名,全国计算机专业大学排名2017计算机专业大学排名
  6. 三个数据分析的技巧:找趋势、看分布、做细化
  7. 一般云服务器支持多少并发,一般云服务器支持是多大并发?
  8. 全球重力场模型数据下载
  9. python算法—1234能组成不重复3位数
  10. C#实现的系统内存清理