专栏名称: 郭霖
Android技术分享平台,每天都有优质技术文章推送。你还可以向公众号投稿,将自己总结的技术心得分享给大家。
目录
相关文章推荐
开发者全社区  ·  某上市公司90后美女投关进去了 ·  2 天前  
开发者全社区  ·  当初和你结婚,对你的定位是P7 ·  2 天前  
开发者全社区  ·  山东相亲食物链:码农沦为底层 ·  2 天前  
开发者全社区  ·  龙太子的瓜 ·  3 天前  
开发者全社区  ·  一顿饭42w ·  3 天前  
51好读  ›  专栏  ›  郭霖

高仿微信发送位置(高德地图版)

郭霖  · 公众号  · android  · 2016-10-27 08:00

正文

今日科技快讯

市场研究机构发布最新数据显示:2016年第三季度,OPPO 在国内的市场份额为16.6%,高居榜首;vivo 以16.2%屈居次席。OPPO 和 vivo 同时超越华为的15%,一跃成为国内前两大智能手机厂商。

专业人士分析,OPPO 主要归功于 R9 的惊艳表现,R9 第三季度的销量已经超过了iPhone;而 vivo 主要依靠旗舰产品 X7 系列。他们产品的成功一定程度依赖于线下零售和良好的分销网络。如今,两大老牌手机厂商华为和小米都已被这两个靠综艺节目冠名而出名的手机厂商所超越。

作者简介

本篇来自 阿敏其人 的投稿,跟大家分享了他是如何使用高德地图API实现定位功能的,希望对大家能够有所帮助。

阿敏其人 的博客地址:

http://www.jianshu.com/users/9ea3fea67109

前言

我们先来看一下原版的微信发送位置。嗯,是发送位置,为什么不带发送实时位置,缺个另外一个真机。嗯,买一个16年出的google亲儿子,嗯,信仰充值先想想就好!

微信原版发送位置

接下来,再来看一下自己的程序gif:

嗯哼,看完啦。

需求分析

从原版微信的gif当中,我们看到,大概可以分为这么几个行为:

1. 进入页面,产生两个标记点,周围地点列表。

  • 两个标记点: 一个是 固定不变 当前位置的定位圆形标记; 一个是 可移动 红色标记 并且,会根据当前经纬度改变位置

  • 地址列表: 就是根据当前刚进入页面的经纬度搜索的出来的 附近 poi (附近 兴趣点

2. 当我们点击周围点的列表,列表更新圆形绿色切换,这点没什么好说,需要注意的是:

  • 地图会动态改变位置

  • 可移动的地图上的 红色标记 处于地图的 中心点位置

3. 当我们手动拖动地图,这时候两点注意:

  • 当手势松开的时候,可移动 红色标记 移动并且居中

  • 周围 poi列表 信息更新,而且第一条信息是我们当前屏幕的中心点所获取的地址,这个地址 逆地里编码 得到的,即经纬度转地址

4. 点击搜索条关键字,按关键字进行搜索展示列表:

  • 第一个 poi 信息作为 默认选择item

  • 如果我们不按下item,直接返回,那么之前页面的信息不变,地址照旧

  • 如果我们按下item,那么该item作为之前页面的poi地址列表 第一条item,并且搜索附近的 poi信息。

嗯,大概这么就是介么个样子,页面简单,写成文字还是看起来巴拉巴拉一大堆的。我们的demo大概也就是围绕着上面几点展开的。

环境说明

  • 当前微信版本:6.3.25

  • android高德地图版本:

16年9月份官网给的

  • 测试机器:菊花荣耀7,Android6.0。

  • IDE: AS。

嗯,交代完毕。

开码

我们这里涉及到三个Activity,分别是:

  • JwActivity: 得到定位,暂且叫做 A页面

  • ShareLocActivity: 发送位置页面 暂且叫做 B页面

  • SeaechTextAddressActivity: 搜索页面 暂且叫做 C页面

1. 发送位置,最基本我们需要获得定位

之前弄得工具类,客官您将就着用,首先是权限部分:


具体代码:


好啦,调用一下,奔着分享位置的页面去拉:


2. 逆地理编码,经纬度转地址

从这里开始,我们就跳到了B页面啦~

B页面 拿到 A页面 的经纬度之后,就开始心急火燎地想把经纬度转地址啦!这个时候 逆地理编码 出现了。

逆地理编码 大概是这么几步走的:

1、 得到 GeocodeSearch 的实例

2、 实现 GeocodeSearch. OnGeocodeSearchListener 接口

3、 实现接口就必须实现实现一下两方法 onRegeocodeSearched onGeocodeSearched

Geocode 是地理编码的意思, Regeocode 就是逆地理编码的。

所以我们主要逆地理实现逻辑都在 onRegeocodeSearched 方法, 转成代码大概就是:

step1:

private GeocodeSearch geocoderSearch;

step2:

geocoderSearch = new GeocodeSearch(this);

step3:


返回码 1000 表示转换成功,拿到我们 RegeocodeResult 的形参我们可以得到地址。

3. 根据经纬度搜索周围poi信息

poi搜索分 搜索关键字 搜索经纬度

官网的demo提供了搜索关键字的,但是没有相应的按照经纬度的,其实做起来也差不多,但是一开始看文档找呀找,找不到,为什么不也示例一下。

其实使用方法也是比较类似的。

1. 首先我们要得到 private PoiSearch.Query 的实例。

2. 按需求设置搜索配置。

  • 按经纬度搜索该点周围的poi信息


  • 按照关键字搜索附近的poi信息


不管是按照关键字还是按照经纬度,我们都要利用 setOnPoiSearchListener 实现搜索 poi 的接口,然后实现 onPoiSearched onPoiItemSearched 这两个方法,在关键 onPoiSearched 方法里面我们可以得到搜索的 poi 结果集合。

4. 在onPoiSearched方法里面操作数据,更新列表


这么一个流程跑下来,poi数据就拿到了。

5. 拖动地图







请到「今天看啥」查看全文


推荐文章
开发者全社区  ·  某上市公司90后美女投关进去了
2 天前
开发者全社区  ·  当初和你结婚,对你的定位是P7
2 天前
开发者全社区  ·  山东相亲食物链:码农沦为底层
2 天前
开发者全社区  ·  龙太子的瓜
3 天前
开发者全社区  ·  一顿饭42w
3 天前
墨香中华  ·  母亲,我想您!(看到泪奔)
7 年前