Android 百度地图开发(一)
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
現(xiàn)在好多手機(jī)應(yīng)用開發(fā)需要使用到百度地圖,在使用百度地圖的過(guò)程和遇到的問(wèn)題整理一下方便以后使用
申請(qǐng)密鑰
使用白度地圖首先需要申請(qǐng)API Key,申請(qǐng)百度賬戶才能得到API Key. 登錄 http://developer.baidu.com/map/ 點(diǎn)擊申請(qǐng)密鑰
申請(qǐng)過(guò)程中需SHA1,使用Eclipse的同學(xué)應(yīng)該很容易使用圖像工具找到,但是使用Android-studio的同學(xué)可能找不到,我也沒(méi)有找到
我找的過(guò)程是,打開cmd,或者在AS中的Terminal.找到debug-keystore文件,比如我的是D:\Users\*****\.android.
在Termina中進(jìn)入該文件目錄,然后輸入"keytool -list -v -keystore debug.keystore",命令,記住進(jìn)入目錄下.
申請(qǐng)密鑰的其他步驟就不在此多說(shuō)了.拿的密鑰后我們就可以正式在我們的App中使用了.
正式開發(fā)
創(chuàng)建好項(xiàng)目后,首先將API包括的兩個(gè)文件baidumapapi.jar和libBMapApiEngine.so拷貝到工程根目錄及l(fā)ibs\armeabi目錄下,
AS添加jar有兩種方法,一種是在所要添加的jar上右鍵選擇"Add as library"即可,一種是打開build.gradle,build.gradle有兩個(gè)
一定要打開項(xiàng)目?jī)?nèi)部的build.gradle,添加下面的代碼,
dependencies {
? ? .....
? ? compile files('libs/BaiduLBS_Android.jar')
}
基本使用
在AndroidManifest.xml中添加
<meta-data ?
? ? android:name="com.baidu.lbsapi.API_KEY" ?
? ? android:value="AK" /> ?
name就是上面的name不要改變,value是你申請(qǐng)到的AK.
百度API所需權(quán)限?
<uses-permission android:name="android.permission.GET_ACCOUNTS" /> ?
<uses-permission android:name="android.permission.USE_CREDENTIALS" /> ?
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" /> ?
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" /> ?
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> ?
<uses-permission android:name="android.permission.INTERNET" /> ?
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /> ?
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> ?
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> ?
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> ?
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> ?
<uses-permission android:name="android.permission.BROADCAST_STICKY" /> ?
<uses-permission android:name="android.permission.WRITE_SETTINGS" /> ?
<uses-permission android:name="android.permission.READ_PHONE_STATE" />?
基本是那個(gè)就是這些權(quán)限了.
在自己的xml文件中加入mapview,
<com.baidu.mapapi.map.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();
}
注意兩點(diǎn),
1.initialize方法中必須傳入的是ApplicationContext,傳入this,或者M(jìn)AinActivity.this都會(huì)報(bào)運(yùn)行時(shí)異常.
2.initialize方法必須寫在setContentView方法前面,新同學(xué)也許會(huì)寫在后面結(jié)果報(bào)xml中的錯(cuò)誤.
private void initBaiduMap(){
? ? mBaiduMapView = (MapView) findViewById(R.id.m_mapview);?
}
寫到這里基本上就可以運(yùn)行出效果了.
? ? @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(); ?
? ? }
有的新同學(xué)使用AS運(yùn)行的時(shí)候會(huì)報(bào)錯(cuò),我寫出我自己遇到的幾個(gè)錯(cuò)誤.
1.java.lang.UnsatisfiedLinkError: Native method not found: com.baidu.platform.comjni.map.basemap.JNIBaseMap.Create:()J
這個(gè)是由于在AS上我們將.so文件放在了libs文件夾中,在AS中這樣是不行的.我們需要將其放在JniLibs文件夾中,于是有的新同學(xué)就自己創(chuàng)建了
JniLibs文件夾結(jié)果還是不行,這個(gè)時(shí)候新同學(xué)可以仔細(xì)看一下你所創(chuàng)建的JniLibs文件夾和res文件是否一樣,有個(gè)金黃色的圓柱行的標(biāo)志,在右下角.
如果沒(méi)有那就對(duì)了新同學(xué)其實(shí)不需要自己添加JniLibs文件夾的.我們所要做的是:
打開項(xiàng)目?jī)?nèi)部的build.gradle,添加下面的代碼,
sourceSets {
? ? main {
? ? ? ? jniLibs.srcDir 'libs'
? ? }
}
再看一下是否有了JniLibs文件夾.這樣就不會(huì)后此錯(cuò)誤了.
2.也許運(yùn)行的時(shí)候會(huì)遇見230錯(cuò)誤,Authentication Error errorcode: 230 uid: -1 appid -1 msg: APP Scode碼校驗(yàn)失敗.
這個(gè)其實(shí)基本上是自己的AK出現(xiàn)了問(wèn)題,你可以查看自己的SHA1是否正確,申請(qǐng)密鑰時(shí)填寫的包名是否完整.
另外有的同學(xué)的電腦上有兩個(gè)\.android\debug-keystore文件,我就是這樣被坑了的.所有確認(rèn)一下自己的AS所對(duì)應(yīng)的debug-keystore文件.
今天就寫到這里,后續(xù)我還會(huì)在繼續(xù)使用百度地圖踩踩坑,總結(jié)一下為新同學(xué)填坑.
版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。
轉(zhuǎn)載于:https://my.oschina.net/SunnyTime/blog/520577
總結(jié)
以上是生活随笔為你收集整理的Android 百度地图开发(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 如何设置亚马逊美国站促销16位优惠码?
- 下一篇: Cesium 4490 解决方案