利用百度地图利用百度地图Android sdk高仿微信发送位置功能及遇到的问高仿微信发送位置功能及遇到的问
题题
接触了百度地图开发平台半个月了,这2天试着模仿了微信给好友发送位置功能,对百度地图的操作能力又上了一个台阶
我在实现这个功能的时候,遇到一些困难,可能也是别人将会遇到的困难,特在此列出
1、在微信发送功能中,不管用户如何拖拽地图,总有个覆盖物固定了、在微信发送功能中,不管用户如何拖拽地图,总有个覆盖物固定了MapView中央,怎么实现?中央,怎么实现?
其实这很容易实现,只要MapView的布局文件中,将一个ImageView覆盖在MapView的中央,就能够实现不管用户如何拖
拽地图,覆盖物(ImageView)总固定总MapView中央
2、如何获取、如何获取MapView中央的地理坐标,也即是屏幕覆盖物处的坐标?中央的地理坐标,也即是屏幕覆盖物处的坐标?
要获取MapView中央的地理坐标,首先先获取覆盖物在屏幕上的物理坐标,这里得区别一下地理坐标(经纬度)和物理坐
标(xy轴);
可以通过
<mCenterPoint = mBaiduMap.getMapStatus().targetScreen;//mBaiduMap是BaiduMap类的实例
来获取物理坐标,这个物理坐标是不变的,而物理坐标对应的地理坐标却是随着用户拖拽地图而改变,所以,当我们需要地理
坐标时,可以通过
currentLatLng = mBaiduMap.getProjection().fromScreenLocation(
mCenterPoint);</strong></span>
获取。
3、如何获取该地理坐标周围的所有、如何获取该地理坐标周围的所有poi信息(也就是周围建筑物的信息),而不只是某个类型的兴趣点?信息(也就是周围建筑物的信息),而不只是某个类型的兴趣点?
为了实现这个功能,真是费了我好大劲,因为我之前一直以为用POI周边搜索实现的,有人提示我可以通过循环轴线搜索实
现不同关键字搜索,但这样子确实很难实现跟微信那样的效果。通过查看API,发现可以通过反地理编码解决这个问题,至于
什么事反地理编码,可以到百度地图官网了解,通过调用它,可以返回一个该地理坐标附近建筑信息的一个列表
4、当用户拖拽地图,如何让列表更新到目前中心地理位置的周边信息?、当用户拖拽地图,如何让列表更新到目前中心地理位置的周边信息?
这个困难其实也不难实现,只是重写mBaiduMap.setOnMapTouchListener(touchListener);触摸事件,在触摸监听器的回调函
数中
将MapView中央的物理坐标转换成对应的地理坐标,再通过反地理编码获取周边信息,道理同问题3
5、当点击、当点击listview某一项时,如何将项地理位置显示在某一项时,如何将项地理位置显示在MapView也就是屏幕中央?也就是屏幕中央?
很简单,通过listview的适配器获取item的位置信息,包括经纬度,然后用动画跳转到屏幕中央位置即可。
我认为上面5个问题是实现这个功能的关键所在,下面是效果图