android百度地图——获取当前地理位置

首先需要准备的工具:

1、百度地图api下载地址:http://developer.baidu.com/map/sdk-android.htm完整版下载后会有以下的三个文件;

功能不多说,自己结合(docs)文档和(Sample)来了解具体的功能和实现方法。

2、百度秘钥:http://developer.baidu.com/map/android-mobile-apply-key.htm

大部分的对外开放接口都有一个秘钥,百度也不例外,秘钥的申请在官网上有详细的教程,在这里就不浪费文字啰嗦了。

接下来就开始着手项目:

1、导入百度api:

把Lib文件夹下面的jar文件和os文件一并copy到项目的libs包里面,右击项目:Build Path——Configure Build Path

——Libraries——Add JARS把两个包都加载到项目中,接着在Order and Export当中勾选到刚刚导入的两个文件

2、要获取地理位置首先的通过百度地图api来获取百度自己的经纬度,不能使用通过gps获取的经纬度来获取当前地理

位置名称,原因在百度api中有如下解释:

http://developer.baidu.com/map/geosdk-symbian-qa.htm

获取经纬度需要用到LocationClint类,

LocaltionClient中需要设置定位条件,定位条件通过LocationClientOption类来包装,包装好之后LocaltionClient只需要

调用LocaltionClient.setLocOption(LocationClientOption)方法即可,接下来就是注册位置监听器,

locationClient.registerLocationListener在监听器中有两个方法,一看名字就知道我们要用的方法是哪一个,只要在该

方法体中去实现我们的功能,比如获取经纬度等等,当然这样还不够,还需要让LocaltionClient.start()和LocaltionClient.request();

在这两个方法执行之后才能获取到经纬度的值。

其方法如下

 public void getLongitdue(){
         LocationClient locationClient = new LocationClient(context);
            //设置定位条件
            LocationClientOption option = new LocationClientOption();
            option.setOpenGps(true);        //是否打开GPS
            option.setCoorType("bd09ll");        //设置返回值的坐标类型。
            option.setPriority(LocationClientOption.NetWorkFirst);    //设置定位优先级
            option.setProdName(context.getString(R.string.app_name));    //设置产品线名称。强烈建议您使用自定义的产品线名称,方便我们以后为您提供更高效准确的定位服务。
            option.setScanSpan(100);//设置定时定位的时间间隔。单位毫秒
            locationClient.setLocOption(option);
            //注册位置监听器
            locationClient.registerLocationListener(new BDLocationListener() {
                public void onReceivePoi(BDLocation arg0) {
                }
                public void onReceiveLocation(BDLocation location) {
                    latitude=location.getLatitude();
                    longitude=location.getLongitude();
                }
            });
            if(locationClient.isStarted()){
                locationClient.stop();    
            }
            locationClient.start();
            locationClient.requestLocation();
            locationClient.requestNotifyLocation();
        }

  获取到经纬度就方便多了,只需要调用MKsearch类的into()方法和reverseGeocode()方法就可以获取当前的详细位置了。

 bMapManager=new BMapManager(context);
         bMapManager.init(myApplication.strKey,myApplication.generalListener);
         mksearch=new MKSearch();
         mksearch.init(bMapManager, new MyMKSearchListener());
         getLongitude();
         mksearch.reverseGeocode(new GeoPoint((int) ( latitude* 1E6),(int) (longitude * 1E6)));

在MyMKSearchListener当中的 onGetAddrResult()方法中就可获取当前地理位置。

 

 

 

 

posted @ 2013-12-04 19:59  hezijie  阅读(5274)  评论(0编辑  收藏  举报