您的位置:首页 > 移动开发 > Android开发

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

2013-12-04 19:59 776 查看
首先需要准备的工具:

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()方法中就可获取当前地理位置。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐