android 百度开发论坛,Android 百度地图开发(一)

现在好多手机应用开发需要使用到百度地图,在使用百度地图的过程和遇到的问题整理一下方便以后使用

申请密钥

使用白度地图首先需要申请API Key,申请百度账户才能得到API Key. 登录 http://developer.baidu.com/map/ 点击申请密钥

申请过程中需SHA1,使用Eclipse的同学应该很容易使用图像工具找到,但是使用Android-studio的同学可能找不到,我也没有找到

我找的过程是,打开cmd,或者在AS中的Terminal.找到debug-keystore文件,比如我的是D:\Users\*****\.android.

在Termina中进入该文件目录,然后输入"keytool -list -v -keystore debug.keystore",命令,记住进入目录下.

申请密钥的其他步骤就不在此多说了.拿的密钥后我们就可以正式在我们的App中使用了.

正式开发

创建好项目后,首先将API包括的两个文件baidumapapi.jar和libBMapApiEngine.so拷贝到工程根目录及libs\armeabi目录下,

AS添加jar有两种方法,一种是在所要添加的jar上右键选择"Add as library"即可,一种是打开build.gradle,build.gradle有两个

一定要打开项目内部的build.gradle,添加下面的代码,

dependencies {

.....

compile files('libs/BaiduLBS_Android.jar')

}

基本使用

在AndroidManifest.xml中添加

android:name="com.baidu.lbsapi.API_KEY"

android:value="AK" />

name就是上面的name不要改变,value是你申请到的AK.

百度API所需权限

基本是那个就是这些权限了.

在自己的xml文件中加入mapview,

android:id="@+id/m_mapview"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:clickable="true" />

在Activity中的onCreate方法中,

private MapView mBaiduMapView = null;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

SDKInitializer.initialize(getApplicationContext());

setContentView(R.layout.activity_main);

initBaiduMap();

}

注意两点,

1.initialize方法中必须传入的是ApplicationContext,传入this,或者MAinActivity.this都会报运行时异常.

2.initialize方法必须写在setContentView方法前面,新同学也许会写在后面结果报xml中的错误.

private void initBaiduMap(){

mBaiduMapView = (MapView) findViewById(R.id.m_mapview);

}

写到这里基本上就可以运行出效果了.

@Override

protected void onResume() {

super.onResume();

mBaiduMapView.onResume();

}

@Override

protected void onPause() {

super.onPause();

mBaiduMapView.onPause();

}

@Override

protected void onDestroy() {

mBaiduMapView.onDestroy();

mBaiduMapView = null;

super.onDestroy();

}

有的新同学使用AS运行的时候会报错,我写出我自己遇到的几个错误.

1.java.lang.UnsatisfiedLinkError: Native method not found: com.baidu.platform.comjni.map.basemap.JNIBaseMap.Create:()J

这个是由于在AS上我们将.so文件放在了libs文件夹中,在AS中这样是不行的.我们需要将其放在JniLibs文件夹中,于是有的新同学就自己创建了

JniLibs文件夹结果还是不行,这个时候新同学可以仔细看一下你所创建的JniLibs文件夹和res文件是否一样,有个金黄色的圆柱行的标志,在右下角.

如果没有那就对了新同学其实不需要自己添加JniLibs文件夹的.我们所要做的是:

打开项目内部的build.gradle,添加下面的代码,

sourceSets {

main {

jniLibs.srcDir 'libs'

}

}

再看一下是否有了JniLibs文件夹.这样就不会后此错误了.

2.也许运行的时候会遇见230错误,Authentication Error errorcode: 230 uid: -1 appid -1 msg: APP Scode码校验失败.

这个其实基本上是自己的AK出现了问题,你可以查看自己的SHA1是否正确,申请密钥时填写的包名是否完整.

另外有的同学的电脑上有两个\.android\debug-keystore文件,我就是这样被坑了的.所有确认一下自己的AS所对应的debug-keystore文件.

今天就写到这里,后续我还会在继续使用百度地图踩踩坑,总结一下为新同学填坑.

版权声明:本文为博主原创文章,未经博主允许不得转载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值