本文介紹百度地圖的簡單顯示的操作步驟,對于詳細(xì)顯示百度地圖的定位,檢索,路線規(guī)劃等等,另作文章總結(jié)。

這里在布局中添加幾個(gè)按鈕,通過經(jīng)緯度定位來確定位置,并顯示地圖效果:

下面是具體操作步驟

選擇具體內(nèi)容,圖解:

選擇開發(fā)包,當(dāng)然也可以選擇示例代碼,示例代碼里面有簡單的示例(包含開發(fā)包)。 找到下載的Lib包,解壓得到一個(gè)libs文件夾,這個(gè)文件夾,就是Android百度地圖需要用的SDK開發(fā)包。 圖解:

要復(fù)制的文件的圖解:


compile files('libs/BaiduLBS_Android.jar')5.依賴so文件,也是在build中,代碼:
sourceSets { main { jniLibs.srcDirs = ['libs'] } }導(dǎo)入jar和依賴so后的圖示:
(三) application中添加開發(fā)者的key
這步需要操作的還是比較多的,并且設(shè)計(jì)到上面提到的幾個(gè)麻煩的點(diǎn)。
1.獲得開發(fā)版SHA1
在AndroidStudio右邊找到Gradle(要找程序?qū)?yīng)的),點(diǎn)開(圖片不夠大,右鍵,新窗口打開)

接下來

發(fā)布版的SHA1,在簽名打包后會(huì)給你的,不過這里可以先不用。 簽名打包的方法步驟:http://blog.csdn.net/wenzhi20102321/article/details/54174267如果是在Eclipse中獲取開發(fā)版SHA1(里面有講如何使用cmd命令獲取開發(fā)版的SHA1): http://www.th7.cn/PRogram/Android/201410/297534.shtml
2.在百度中注冊百度地圖程序,申請密鑰:
地址:http://lbsyun.baidu.com/apiconsole/key創(chuàng)建應(yīng)用,圖解:
填寫應(yīng)用的數(shù)據(jù),圖解:

點(diǎn)擊提交后,生成百度地圖的密鑰:

3.在Studio地圖程序中的application添加密鑰:
<meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="McaaXKfXugXGWxo7bcYWLZOzd72mAYts" />上面的name是不用變的,把value的值替換成你申請到的百度地圖的密鑰就可以了。 圖解(添加百度地圖密鑰的位置):
注意:這里百度地圖的密鑰是根據(jù)包名生成的,每個(gè)程序都是不一樣的,新建程序后又要重新申請密鑰,不要使用以前的密鑰!
上面的步驟做完后,下面都是比較簡單的步驟 其實(shí)根據(jù)百度地圖開發(fā)的操作提示步驟一步一步執(zhí)行就可以了: http://lbsyun.baidu.com/index.php?title=androidsdk/guide/hellobaidumap
(四) 添加權(quán)限
<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.WAKE_LOCK" /><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.GET_TASKS" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.WRITE_SETTINGS" />(五)初始化sdk(就一句話)
可以在Activity的onCreate方法中執(zhí)行,也可以在MyApp中執(zhí)行。//在Activity中注冊//在使用SDK各組件之前初始化context信息,傳入ApplicationContext//注意該方法要再setContentView方法之前實(shí)現(xiàn)SDKInitializer.initialize(getApplicationContext());//如果是在MyApp中注冊,記得要在AndroidManifest中注冊//SDKInitializer.initialize(this);(六)添加布局,顯示地圖視圖的代碼設(shè)計(jì)
獲取地圖上任意位置的經(jīng)緯度:http://api.map.baidu.com/lbsapi/getpoint/index.html
1.設(shè)計(jì)布局文件
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="shenzhen" android:text="深圳大學(xué)" /> <Button android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="nongda" android:text="江西農(nóng)大" /> <Button android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="myHome" android:text="我家" /> </LinearLayout> <com.baidu.mapapi.map.MapView android:id="@+id/bmapView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" /></LinearLayout>2.顯示百度地圖的代碼
package fuxi.baidumap;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import com.baidu.mapapi.SDKInitializer;import com.baidu.mapapi.map.BaiduMap;import com.baidu.mapapi.map.BitmapDescriptor;import com.baidu.mapapi.map.BitmapDescriptorFactory;import com.baidu.mapapi.map.MapStatusUpdate;import com.baidu.mapapi.map.MapStatusUpdateFactory;import com.baidu.mapapi.map.MapView;import com.baidu.mapapi.map.MarkerOptions;import com.baidu.mapapi.map.OverlayOptions;import com.baidu.mapapi.model.LatLng;public class MainActivity extends AppCompatActivity { MapView mMapView = null;//百度地圖顯示布局對象 BaiduMap mBaiduMap = null;//百度地圖控制對象 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //在使用SDK各組件之前初始化context信息,傳入ApplicationContext //注意該方法要再setContentView方法之前實(shí)現(xiàn) SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main); //獲取地圖控件引用 mMapView = (MapView) findViewById(R.id.bmapView); //百度地圖控制對象 mBaiduMap = mMapView.getMap(); //普通地圖 mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL); } @Override protected void onDestroy() { super.onDestroy(); //在activity執(zhí)行onDestroy時(shí)執(zhí)行mMapView.onDestroy(),實(shí)現(xiàn)地圖生命周期管理 mMapView.onDestroy(); } @Override protected void onResume() { super.onResume(); //在activity執(zhí)行onResume時(shí)執(zhí)行mMapView. onResume (),實(shí)現(xiàn)地圖生命周期管理 mMapView.onResume(); } @Override protected void onPause() { super.onPause(); //在activity執(zhí)行onPause時(shí)執(zhí)行mMapView. onPause (),實(shí)現(xiàn)地圖生命周期管理 mMapView.onPause(); } /** * 跳轉(zhuǎn)到深圳大學(xué)的地圖顯示 */ public void shenzhen(View view) { //定義Maker坐標(biāo)點(diǎn),設(shè)置大學(xué)經(jīng)度和緯度113.943062,22.54069 //設(shè)置的時(shí)候經(jīng)緯度是反的 緯度在前,經(jīng)度在后 LatLng point = new LatLng(22.54069, 113.943062); //構(gòu)建Marker圖標(biāo) BitmapDescriptor bitmap = BitmapDescriptorFactory .fromResource(R.mipmap.shenzhen); //構(gòu)建MarkerOption,用于在地圖上添加Marker OverlayOptions option = new MarkerOptions() .position(point) .icon(bitmap); //在地圖上添加Marker,并顯示 mBaiduMap.addOverlay(option); //1-20級 20級室內(nèi)地圖 MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.newLatLngZoom(point, 19); mBaiduMap.setMapStatus(mapStatusUpdate); } /** * 跳轉(zhuǎn)到江西農(nóng)大的地圖顯示 */ public void nongda(View view) { //設(shè)置江西農(nóng)業(yè)大學(xué)經(jīng)度和緯度115.839391,28.76806 //設(shè)置的時(shí)候經(jīng)緯度是反的 緯度在前,經(jīng)度在后 LatLng latlng = new LatLng(28.76806, 115.839391); //1-20級 20級室內(nèi)地圖 MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.newLatLngZoom(latlng, 18); mBaiduMap.setMapStatus(mapStatusUpdate); } /** * 跳轉(zhuǎn)到我家的地圖顯示 */ public void myHome(View view) { //設(shè)置我家經(jīng)度和緯度111.00047,22.923935 //設(shè)置的時(shí)候經(jīng)緯度是反的 緯度在前,經(jīng)度在后 LatLng latlng = new LatLng(22.923935, 111.00047); //1-20級 20級室內(nèi)地圖 MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.newLatLngZoom(latlng, 18); mBaiduMap.setMapStatus(mapStatusUpdate); }}上面只有顯示深圳大學(xué)的地理位置時(shí),添加了標(biāo)記物,其他的都是根據(jù)經(jīng)緯度簡單定位。 程序運(yùn)行后的界面(默認(rèn)顯示北京首都,當(dāng)然也可以設(shè)置):
點(diǎn)擊深圳大學(xué)按鈕顯示的界面:

點(diǎn)擊農(nóng)大按鈕后顯示的界面:

點(diǎn)擊我家按鈕后顯示的界面:

到這里,關(guān)于百度地圖的簡單顯示和應(yīng)用已經(jīng)介紹完畢了。 對于很多手機(jī)程序只顯示某個(gè)地理位置,都是根據(jù)經(jīng)緯度定位確定的,上面也是有演示的代碼的,并且可以添加標(biāo)記物。 當(dāng)然,這里只是開發(fā)百度地圖的開始而已,百度地圖還有很多其他功能沒有詳細(xì)介紹,比如:交通圖,或路線規(guī)劃圖,周圍景點(diǎn)搜索功能等等。這些另作文章總結(jié)! 如果上面能夠顯示,也可以自己摸索一下百度地圖的其他功能,在百度開發(fā)者網(wǎng)頁中,都是有比較詳細(xì)的介紹,這個(gè)也是考驗(yàn)?zāi)愕膶W(xué)習(xí)研究能力。 地址:http://lbsyun.baidu.com/index.php?title=androidsdk/guide/introduction
圖解:

點(diǎn)擊左邊的目錄,右邊會(huì)有對應(yīng)的步驟和代碼。 謝謝! 對于上面用于顯示百度地圖的View,百度官方還提供了另一種方法顯示百度地圖,那就是使用碎片! 主要代碼如下: 布局代碼:
<fragment android:id="@+id/fragment" android:name="com.baidu.mapapi.map.MapFragment" android:layout_width="match_parent" android:layout_height="match_parent" />java代碼:MapView mMapView = null;//百度地圖顯示布局對象 //獲取地圖控件引用 mMapView = ((MapFragment) getFragmentManager().findFragmentById(R.id.fragment)).getMapView();百度地圖的控制對象都是一樣從View中獲取的: BaiduMap mBaiduMap = null;//百度地圖控制對象 //百度地圖控制對象 mBaiduMap = mMapView.getMap();使用fragment顯示地圖的好處就是不用重寫:onResume、onStop、onDestroy方法,生命生命周期,生命周期百度地圖自己在碎片類已經(jīng)進(jìn)行管理了!
|
新聞熱點(diǎn)
疑難解答