常规地图位置经纬度都是通过高德提供的定位获取的,有这么一个需求,不通过地图定位当前设备的位置信息,需要手动在地图上点击获取经纬度和这个点的位置信息,接下来分析下如何实现。
第一步:点击地图图层获取经纬度,首先需要实例化地图图层等相关组件这里就不细说了,然后需要实现OnMapClickListener接口,目的是为了实现对地图图层Map的点击监听,代码中初始化时还需要加上一句;
aMap.setOnMapClickListener(this);
第二部:在实现监听接口后需要重写的OnMaplick方法里获取经纬度信息,如下图:
第三步:现在要获取位置信息了,有人可能会问,经纬度都返回了,为什么位置信息不一起返回呢?难道这个OnMaplick返回的信息里没有经纬度信息?是的,只有经度和纬度,也就是说我们点击了一下只获取了经纬度,那么如何通过经纬度获取位置信息呢?接着往下看;
首先实现OnGeocodeSearchListener接口,这个接口是高德地图搜索模块的,需要先集成搜索模块的相关SDK才能使用
第四步:实现这个接口会重写两个方法onRegeocodeSearched方法和onGeocodeSearched方法,这里我们获取位置信息只需要处理onRegeocodeSearched方法即可,
第五步:声明GeocodeSearch实体类
在实例化方法中初始化这个对象,并实例化监听;
第六步:在OnMaplick获取经纬度的方法里调用下图方法传入经纬度信息,然后逆地理编码获取位置信息;
最后一步在onRegeocodeSearched回调方法里获取最终结果位置信息。