利用百地图Android sdk高仿微信发送位置功能

blog.csdn/shishuiwangchuan//details/40652203接触了百度地图开发平台半个月了,这2天试着模仿了微信给好友发送位置功能,对百度地图的操作能力又上了一个台阶(如果需要完整demo,请评论留下邮箱)我在实现这个功能的时候,遇到一些困难,可能也是别人将会遇到的困难,特在此列出1、在微信发送功能中,不管用户如何拖拽地图,总有个覆盖物固定了MapView中央,怎么实现?其实这很容易实现,只要MapView的布局文件中,将一个ImageView覆盖在MapView的中央,就能够实现不管用户如何拖拽地图,覆盖物(ImageView)总固定总MapView中央2、如何获取MapView中央的地理坐标,也即是屏幕覆盖物处的坐标?要获取MapView中央的地理坐标,首先先获取覆盖物在屏幕上的物理坐标,这里得区别一下地理坐标(经纬度)和物理坐标(xy轴);可以通过[java]viewplaincopy1.<mCenterPoint=mBaiduMap.getMapStatus().targetScreen;//mBaiduMap是BaiduMap类的实例来获取物理坐标,这个物理坐标是不变的,而物理坐标对应的地理坐标却是随着用户拖拽地图而改变,所以,当我们需要地理坐标时,可以通过[java]viewplaincopy1.currentLatLng=mBaiduMap.getProjection().fromScreenLocation(2.mCenterPoint);获取。3、如何获取该地理坐标周围的所有poi信息(也就是周围建筑物的信息),而不只是某个类型的兴趣点?为了实现这个功能,真是费了我好大劲,因为我之前一直以为用POI周边搜索实现的,有人提示我可以通过循环轴线搜索实现不同关键字搜索,但这样子确实很难实现跟微信那样的效果。通过查看API,发现可以通过反地理编码解决这个问题,至于什么事反地理编码,可以到百度地图官网了解,通过调用它,可以返回一个该地理坐标附近建筑信息的一个列表4、当用户拖拽地图,如何让列表更新到目前中心地理位置的周边信息?这个困难其实也不难实现,只是重写mBaiduMap.setOnMapTouchListener(touchListener);触摸事件,在触摸监听器的回调函数中将MapView中央的物理坐标转换成对应的地理坐标,再通过反地理编码获取周边信息,道理同问题35、当点击listview某一项时,如何将项地理位置显示在MapView也就是屏幕中央?很简单,通过listview的适配器获取item的位置信息,包括经纬度,然后用动画跳转到屏幕中央位置即可。我认为上面5个问题是实现这个功能的关键所在,下面是效果图(如果需要完整demo,请评论留下邮箱)上面是一个MapVIew,覆盖物固定在其中央,地图左下角的白色正方形是回到定位点的按钮,因为没找到好看的图片,就留着空白了下面是一个listView,显示地图指示地点周围的一些位置信息贴一下实现该功能的核心代码Activity类[java]viewplaincopy1.packagecom.vr.souhuodong.UI.Sou;2.3.importjava.util.ArrayList;4.importjava.util.List;5.6.importandroid.app.Activity;7.importandroid.content.Intent;8.importandroid.graphics.Point;9.importandroid.Uri;10.importandroid.os.Bundle;11.importandroid.vieMotionEvent;12.importandroid.vieView;13.importandroid.widget.AdapterView;14.importandroid.widget.AdapterVieOnItemClickListener;15.importandroid.widget.ImageView;16.importandroid.widget.ListView;17.importandroid.widget.ProgressBar;18.19.importcom.baidu.location.BDLocation;20.importcom.baidu.location.BDLocationListener;21.importcom.baidu.location.LocationClient;22.importcom.baidu.location.LocationClientOption;23.importcom.baidu.mapapi.map.BaiduMap;24.importcom.baidu.mapapi.map.BaiduMap.OnMapTouchListener;25.importcom.baidu.mapapi.map.BitmapDescriptor;26.importcom.baidu.mapapi.map.BitmapDescriptorFactory;27.importcom.baidu.mapapi.map.MapStatusUpdate;28.importcom.baidu.mapapi.map.MapStatusUpdateFactory;29.importcom.baidu.mapapi.map.MapView;30.importcom.baidu.mapapi.map.MarkerOptions;31.importcom.baidu.mapapi.map.MyLocationConfiguration;32.importcom.baidu.mapapi.map.MyLocationConfiguration.LocationMode;33.importco...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

笔杆子文秘
机构认证
内容提供者

为您提供优质文档,供您参考!

确认删除?