Android中百度地图的使用(一)

有些app免不了要使用地图功能,最近自己研究了一下百度地图的使用,写一篇博客记录一下,有说的不到位的地方欢迎各位大哥指正!

一 申请API key

在使用百度地图之前,我们必须去申请一个百度地图的API key,申请地址http://lbsyun.baidu.com/apiconsole/key,自己自行注册一个百度账号,很快就能申请到的,如下图:

在申请可以的时候需要用到一个发布版SHA1,这个发布版SHA1的值可以通过https://download.csdn.net/download/wen_haha/10558799下载一个Apk,就不需要通过dos命令获取了,比较方便。如图所示:

数字签名搞定了,然后点击“创建应用”就ok了。创建完成之后,应用列表中会显示相应的key。

二 下载百度地图API库

要在Android应用中使用百度地图API,就需要在工程中引用百度地图API开发包,下载地址为http://lbsyun.baidu.com/index.php?title=androidsdk/sdkandev-download,下载Android 地图 SDK v5.1.0lib库就行,里面还包含着例子。

三在Android项目中引用百度地图

Android Studio工程配置方法

1.在工程app/libs目录下放入baidumapapi_vX_X_X.jar包,在src/main/目录下新建jniLibs目录,工程会自动加载src目录下的so动态库,放入libBaiduMapSDK_vX_X_X_X.so。

如下图所示,注意jar和so的前3位版本号必须一致,并且保证使用一次下载的文件夹中的两个文件,不能不同功能组件的jar或so交叉使用。

2.往工程中添加jar文件

工程配置还需要把jar包集成到自己的工程中,如上图所示,放入libs目录下。对于每个jar文件,右键-选择Add As Library,导入到工程中。同时在build.gradle中会生成工程所依赖的对应的jar文件说明,代码如下所示:

compile files('libs/BaiduLBS_Android.jar')

3.在AndroidManifest中添加开发密钥、所需权限等信息;

(1)在application中添加开发密钥和百度定位所需要的服务

<application
        android:allowBackup="true"
        android:name=".MapApplication"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <meta-data
            android:name="com.baidu.lbsapi.API_KEY"
            android:value="EEZZhl476r39NmBxkIjGUuG10euovkXr" />
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <!-- 声明service组件 -->
        <service
            android:name="com.baidu.location.f"
            android:enabled="true"
            android:process=":remote" >
        </service>
    </application>

(2)添加所需权限

注意: 权限应添加在 appliction 之外,如添加到appliction 内部,会导致无法访问网络,不显示地图。

 //获取设备网络状态,禁用后无法获取网络状态
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
   //网络权限,当禁用后,无法进行检索等相关业务
    <uses-permission android:name="android.permission.INTERNET"/>
    //读取设备硬件信息,统计数据
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
      //读取系统信息,包含系统版本等信息,用作统计
    <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
  //获取设备的网络状态,鉴权所需网络代理
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
     //允许sd卡写权限,需写入地图数据,禁用后无法显示地图
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    //获取统计数据
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    //鉴权所需该权限获取进程列表
    <uses-permission android:name="android.permission.GET_TASKS" />
   //使用步行AR导航,配置Camera权限
    <uses-permission android:name="android.permission.CAMERA" />
     //获取定位权限
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
   

(3)在布局xml文件中添加地图控件;

 <com.baidu.mapapi.map.MapView
        android:id="@+id/mv_map"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </com.baidu.mapapi.map.MapView>

(4)在应用程序创建时初始化 SDK引用的Context 全局变量;

public class MainActivity extends Activity {  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);   
        //在使用SDK各组件之前初始化context信息,传入ApplicationContext  
        //注意该方法要再setContentView方法之前实现  
        SDKInitializer.initialize(getApplicationContext());  
        setContentView(R.layout.activity_main);  
    }  
}

注意一下initialize方法中必须传入的是ApplicationContext,传入this,或者MAinActivity.this都不行,不然会报运行时异常,所以百度建议把该方法放到Application的初始化方法中。

(5)创建地图Activity,管理地图生命周期;在activity的onResume、onPause、onDestory方法中分别执行mapview的onReusme、onPause、onDestory方法。

public class MainActivity extends Activity {  
    private MapView mMapView = null;  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);   
        //在使用SDK各组件之前初始化context信息,传入ApplicationContext  
        //注意该方法要再setContentView方法之前实现  
        SDKInitializer.initialize(getApplicationContext());  
        setContentView(R.layout.activity_main);  
        //获取地图控件引用  
        mMapView = (MapView) findViewById(R.id.mv_map);  
    }  
    @Override  
    protected void onDestroy() {  
        super.onDestroy();  
        //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理  
        mMapView.onDestroy();  
    }  
    @Override  
    protected void onResume() {  
        super.onResume();  
        //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理  
        mMapView.onResume();  
        }  
    @Override  
    protected void onPause() {  
        super.onPause();  
        //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理  
        mMapView.onPause();  
        }  
    }

完成以上步骤,这样百度地图的基础使用就完成了,我们就可以写一个简单的使用百度地图的例子了。接下来我会对百度地图模式的切换、定位、覆盖物的添加做相关介绍,具体见Android中百度地图的使用(二)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值