地圖以前都是基本屬於導航專有的,但伴隨著智能機的普及,手機地圖也成為了智能機的必備,而且谷歌、百度、凱立德、高德目前對地圖的競爭似乎也進入了白熱化。也許,在以往感覺這個東東是可望不可及的,而今天伴隨著各個地圖供應商API的開放,對我們開發者也變得越來越容易了。
我們今天對百度地圖初探,以揭開這層神秘的面紗。
准備工作:
(1)第一步、申請密鑰;
該套SDK提供的服務是免費的,接口無使用次數限制。您需先申請密鑰(key),才可使用該套SDK。
申請網址:http://developer.baidu.com/map/android-mobile-apply-key.htm
填寫完畢之後,經審核,百度會給您一個密鑰。例如:
(2)第二步,下載Android SDKv2.0.0(矢量地圖版)
下載地址:http://developer.baidu.com/map/static/doc/BaiduMap_AndroidSDK_v2.0.0_Lib.zip
(3)第三步,解壓縮AndroidSDK_v2.0.0_Lib.zip
准備工作至此已經結束。
一、工程配置
1、第一步,在工程裡新建libs文件夾,將開發包裡的baidumapapi_v2_0_0.jar拷貝到libs根目錄下,將libBMapApiEngine_v2_0_0.so和libvi_voslib.so 拷貝到libs\armeabi目錄下,拷貝完成後的工程目錄如下圖所示;
2、第二步:在工程屬性->Java Build Path->Libraries中選擇“Add External JARs”,選定baidumapapi_v2_0_0.jar,確定後返回。
通過以上兩步操作後,您就可以正常使用百度地圖SDK為您提供的全部功能了。
二、設計界面
1、布局文件
打開res/layout/activity_main.xml文件。
輸入以下代碼:
[html] view plain copy
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <com.baidu.mapapi.map.MapView
- android:id="@+id/mapview"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:clickable="true" />
-
- </LinearLayout>
注:使用百度地圖要使用<com.baidu.mapapi.MapView ...>,這個就是用來顯示地圖的MapView控件。
三、程序文件
1、MainActivity.java
打開“src/com.genwoxue.baidumap/MainActivity.java”文件。
然後輸入以下代碼:
[java] view plain copy
- package com.genwoxue.baidumap;
-
- //導入地圖相關包
- import android.app.Activity;
- import android.os.Bundle;
- import com.baidu.mapapi.BMapManager;
- import com.baidu.mapapi.map.MapController;
- import com.baidu.mapapi.map.MapView;
- import com.baidu.platform.comapi.basestruct.GeoPoint;
-
- public class MainActivity extends Activity {
- BMapManager mBMapMan = null;
- MapView mMapView = null;
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
-
- super.onCreate(savedInstanceState);
- //初始化BMapManager對象(注意:請在試用setContentView前初始化,否則會報錯)
- mBMapMan=new BMapManager(getApplication());
- mBMapMan.init("9BFF43A016092BFE3698B8E456B6896FCFC029EE", null);
- setContentView(R.layout.activity_main);
-
- mMapView=(MapView)findViewById(R.id.mapview);
- mMapView.setBuiltInZoomControls(true);
-
- //設置啟用內置的縮放控件
- MapController mMapController=mMapView.getController();
- // 得到mMapView的控制權,可以用它控制和驅動平移和縮放
- GeoPoint point =new GeoPoint((int)(34.7569* 1E6),(int)(113.6632* 1E6));
- //用給定的經緯度構造一個GeoPoint,單位是微度 (度 * 1E6)
- mMapController.setCenter(point);//設置地圖中心點
- mMapController.setZoom(12);//設置地圖zoom級別
- }
-
- @Override
- protected void onDestroy(){
- mMapView.destroy();
- if(mBMapMan!=null){
- mBMapMan.destroy();
- mBMapMan=null;
- }
- super.onDestroy();
- }
- @Override
- protected void onPause(){
- mMapView.onPause();
- if(mBMapMan!=null){
- mBMapMan.stop();
- }
- super.onPause();
- }
- @Override
- protected void onResume(){
- mMapView.onResume();
- if(mBMapMan!=null){
- mBMapMan.start();
- }
- super.onResume();
- }
- }
四、配置文件
打開“AndroidManifest.xml”文件。
然後輸入以下代碼:
[html] view plain copy
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.genwoxue.baidumap"
- android:versionCode="1"
- android:versionName="1.0" >
-
- <uses-sdk
- android:minSdkVersion="10"
- android:targetSdkVersion="15" />
-
- <application
- android:allowBackup="true"
- android:icon="@drawable/ic_launcher"
- android:label="@string/app_name"
- android:theme="@style/AppTheme" >
- <activity
- android:name="com.genwoxue.baidumap.MainActivity"
- android:label="@string/app_name" >
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- <service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote"></service>
- </application>
-
- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- <uses-permission android:name="android.permission.INTERNET" />
- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
- <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
- <!-- SDK離線地圖和cache功能需要讀寫外部存儲器 -->
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
-
- <supports-screens android:largeScreens="true"
- android:normalScreens="true"
- android:smallScreens="true"
- android:resizeable="true"
- android:anyDensity="true"/>
-
- </manifest>
五、運行結果