高德地图定位和位置检索

来源:互联网 发布:淘宝上怎么买处方药 编辑:程序博客网 时间:2024/06/05 22:56

高德地图定位和检索

开发步骤简单的说一下:登录高德api开发平台点击打开链接  注册账号 -->打开控制台-->创建应用-->获取appkey

android studio获取sh1值:

     首先找到debug.keystore 和发布正式版的keystore 建议放在一个好找目录下(我的放在F盘)(放的太深以后其它地方需要用就不好找了)
下面以测试版为例 :
找到jdk bin目录(D:\Program Files\Android\Android Studio\jre\bin),在此目录里按下shift+右键 点击在此打开命令窗口,
输入:keytool -v -list -keystore F:debug.keystore    按下回车键后提示输入密码   默认密码:android    


下载官方sdk

我用的是

 

后面就是导入jar包,so文件官方文档上有说明我就不一一细说了。

由于定位和检索在项目中会用到不少次(重新定位,很多acitivity中都用到),所以进行了简单的封装。

下面贴代码
/** * 高德地图定位 * 和地理检索(根据城市名获取这个城市的信息) */public class GaoDeMapLocation implements AMapLocationListener,PoiSearch.OnPoiSearchListener {    private Context context;    public final static int MSG_LOCATION_START = 0;//开始定位    public final static int MSG_LOCATION_FINISH = 1;//定位完成    public final static int MSG_LOCATION_STOP= 2;//停止定位    private AMapLocationClient locationClient = null;    private AMapLocationClientOption locationOption = null;    private PoiSearch.Query query;//poi查询条件类    private PoiSearch poiSearch;// POI搜索    private PoiResult poiResult; // poi返回的结果    private DingWeiSuccessListener dingWeiSuccessListener;//定位成功的接口    public GaoDeMapLocation(Context context) {        this.context = context;        initdata();    }    /**     * 初始化高德地图定位需要的类     */    private void initdata() {        locationClient = new AMapLocationClient(context);        locationOption = new AMapLocationClientOption();        locationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Battery_Saving);        locationClient.setLocationListener(this);    }    /*在启动当前APP的时候启动定位功能*/    public  void startLocation(){        Log.e("dingwei","#########"+ Build.VERSION.SDK_INT);        locationClient.setLocationOption(locationOption);        locationClient.startLocation();        locationHandler.sendEmptyMessage(MSG_LOCATION_START);    }    //位置检索    public void doSearchQuery(String cityName){        query = new PoiSearch.Query(cityName,"","");        query.setPageSize(10);//设置每页返回多少条条poiitem        query.setPageNum(0);//设置查第一页        poiSearch = new PoiSearch(context,query);        poiSearch.setOnPoiSearchListener(this);        poiSearch.searchPOIAsyn();    }    /*地址切换*/    @Override    public void onLocationChanged(AMapLocation aMapLocation) {        if (null != aMapLocation) {            Message msg = locationHandler.obtainMessage();            msg.obj = aMapLocation;            msg.what = MSG_LOCATION_FINISH;            locationHandler.sendMessage(msg);        }    }    Handler locationHandler = new Handler(){        public void dispatchMessage(Message msg) {            switch (msg.what) {                case MSG_LOCATION_START:                    break;                //定位完成                case MSG_LOCATION_FINISH:                    AMapLocation loc = (AMapLocation)msg.obj;                    String lng = loc.getLongitude()+"";//经度                    String lat = loc.getLatitude()+"";//纬度                    String citycode = loc.getCityCode()+"";//城市编码                    String address = loc.getCity()+"";//城市名称//建议将上面定位成功的信息baocun到SharedPreference中可以在项目中随时用 if (dingWeiSuccessListener!=null){//当定位成功后调用此接口, dingWeiSuccessListener.onDingWeiSuccessListener(); } break; case MSG_LOCATION_STOP: break; default: break; } }; }; @Override public void onPoiSearched(PoiResult result, int resultCode) { Log.e("GAODE", "执行回调:" + resultCode + " result:" + result); //地图搜索的回调 if (resultCode == 1000) { if (result != null && result.getQuery() != null) { poiResult = result; //取得第一页的poiitem的数据,页数从0开始 List<PoiItem> poiItems = poiResult.getPois(); String cityCode = poiItems.get(0).getCityCode();//城市编码 String adName = poiItems.get(0).getAdName();//区的地址,为了给供货区提供区的地址 String pname = poiItems.get(0).getProvinceName();//省的地址,为了给供货区提供省的地址 String cname = poiItems.get(0).getCityName();//市的地址,为了给供货区提供市的地址 LatLonPoint latLonPoint = poiItems.get(0).getLatLonPoint(); double lat = latLonPoint.getLatitude();//纬度 double lng = latLonPoint.getLongitude();//经度//建议将上面检索成功的信息baocun到SharedPreference中可以在项目中随时用               if (cityChangeListener!=null){                    cityChangeListener.onCityChangeListner();                }            }        }    }    @Override    public void onPoiItemSearched(PoiItem poiItem, int i) {    }    public void setDingWeiSuccessListener(DingWeiSuccessListener dingWeiSuccessListener){        this.dingWeiSuccessListener = dingWeiSuccessListener;    }    private CityChangeListener cityChangeListener;    public void setCityChangeListener(CityChangeListener cityChangeListener){        this.cityChangeListener = cityChangeListener;    }    public interface DingWeiSuccessListener{        public void onDingWeiSuccessListener();    }    public interface CityChangeListener{        public void onCityChangeListner();    }}使用教程://定位  GaoDeMapLocation gaoDeMapLocation = new GaoDeMapLocation(this);                gaoDeMapLocation.startLocation();                gaoDeMapLocation.setDingWeiSuccessListener(new GaoDeMapLocation.DingWeiSuccessListener() {                    @Override                    public void onDingWeiSuccessListener() {                        //定位成功的监听 todo                                           }                });//检索GaoDeMapLocation gdl = new GaoDeMapLocation(this);gdl.doSerchaQuery("南京");gdl.setCityChangeListener(new CityChangeLisnener(){@Overridepublic void onCityCHaneListener(){//检索成功}});








0 0
原创粉丝点击