百度地图api定位到当前城市

一、申请密钥

主要难点是在获得发布版SHA1和开发版SHA1,期中发布版SHA1是必填的,新手可能不太了解,如果你没有使用Android Studio打包过签名文件,那么可以将C盘android的配置目录下的debug.keystore文件移动到工作空间的module项目下,如图所示:
这里写图片描述

然后在Android Studio下Alt+F12打开终端,cmd命令(cd 文件名)例如:(cd app)进入到app目录,也就是刚刚复制的debug.keystore目录下使用命令(keytool -list -keystore 文件名)例如(keytool -list -keystore debug.keystore),然后输入密码,默认为android。此时就会显示你应用的sha1值,如图所示:
这里写图片描述
有可能会提示没有keytool命令,就要先进行环境变量配置了。

此时的sha1应该为开发版sha1,但由于项目还没有正式发布,没有打包正式的签名文件,因此可以先暂时填入发布版sha1,此时就可以获得密钥了。如果打包签名后也把.jks文件复制至app目录下进行相同的操作,此时就可以获得发布版sha1了。android studio中的配置如图:
这里写图片描述
这里写图片描述

二、配置Android Studio环境

从相关下载中下载定位中所需要用到的开发包,如图所示
这里写图片描述
然后把开发包里文件夹内容(.so文件)全复制到项目下jniLibs文件夹文件中,.jar文件复制至libs文件夹下。并右键add as library.
这里写图片描述
这里写图片描述
还有详细内容可以

http://lbsyun.baidu.com/index.php?title=android-locsdk/guide/buildprojec

三。代码编写

详细步骤
接下来附上我的完整代码:

public class App extends LitePalApplication{
    //百度地图
    public LocationClient mLocationClient = null;
    public BDLocationListener myListener = new MyLocationListener();
    public String city;


    @Override
    public void onCreate() {
        super.onCreate();
        //百度地图获得位置
        mLocationClient = new LocationClient(getApplicationContext());     //声明LocationClient类
        mLocationClient.registerLocationListener( myListener );    //注册监听函数
        initLocation();
        mLocationClient.start();

    }

    //初始化位置
    private void initLocation() {
        LocationClientOption option = new LocationClientOption();
        //就是这个方法设置为true,才能获取当前的位置信息
        option.setIsNeedAddress(true);
        option.setOpenGps(true);
        option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy
        );//可选,默认高精度,设置定位模式,高精度,低功耗,仅设备
        option.setCoorType("gcj02");//可选,默认gcj02,设置返回的定位结果坐标系
        //int span = 1000;
        //option.setScanSpan(span);//可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的
        mLocationClient.setLocOption(option);

    }

    //监听获得位置
    private class MyLocationListener implements BDLocationListener {

        @Override
        public void onReceiveLocation(BDLocation location) {
            //Receive Location
            //经纬度
            double lati = location.getLatitude();
            double longa = location.getLongitude();
            //打印出当前位置
            Log.i("TAG", "location.getAddrStr()=" + location.getAddrStr());
            //打印出当前城市
            Log.i("TAG", "location.getCity()=" + location.getCity());
            //返回码
            int i = location.getLocType();
            Log.i("TAG","location.getLocType()=" + i);
            city=location.getCity();
        }

    }

    public String getCity(){
        return city;
    }
}

我重写了Application类,并在该类中获得了城市,接下来想在任何activity类中只要通过:

String city = ((App)getApplication()).getCity();

测试一定要在真机上才能获得地理位置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KindSuper_liu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值