當前位置:編程學習大全網 - 源碼下載 - 百度地圖怎麽使用 android

百度地圖怎麽使用 android

剛學完Android,決定來個小小應用。做什麽呢?之前在公司看人家用iOS做的地圖不錯,幹脆我就做個android版吧。

百度了壹下它的api,很簡單。花了半天解決。首先新建壹個工程,然後把baidumapapi.jar拷貝到工程下的lib文件夾裏,同時在裏面建壹個文件夾armeabi,再把libBMapApiEngine_v1_3_3.so動態庫文件拷進去,打開eclipse,右鍵點擊工程的Properties,進入Java?Build Path,打開Libraries,點擊Add External JARS,把baidumapapi.jar添加進去,ok,配置好了。

自定義壹個Aplication類,WhereMapApplication,繼承自Application(拷貝自官方百度):

[cpp]?view?plain?copy?print?

public?class?WhereMapApplication?extends?Application?{?

static?WhereMapApplication?mDemoApp;?

//百度MapAPI的管理類?

BMapManager?mBMapMan?=?null;?

//?授權Key?

//?TODO:?請輸入您的Key,?

//?申請地址:/wiki/static/imap/key/?

String?mStrKey?=?"申請的KEY值";?

boolean?m_bKeyRight?=?true;?//?授權Key正確,驗證通過?

//?常用事件監聽,用來處理通常的網絡錯誤,授權驗證錯誤等?

static?class?MyGeneralListener?implements?MKGeneralListener?{?

@Override?

public?void?onGetNetworkState(int?iError)?{?

Log.d("MyGeneralListener",?"onGetNetworkState?error?is?"+?iError);?

Toast.makeText(WhereMapApplication.mDemoApp.getApplicationContext(),?"您的網絡出錯啦!",?

Toast.LENGTH_LONG).show();?

}?

@Override?

public?void?onGetPermissionState(int?iError)?{?

Log.d("MyGeneralListener",?"onGetPermissionState?error?is?"+?iError);?

if?(iError?==?MKEvent.ERROR_PERMISSION_DENIED)?{?

//?授權Key錯誤:?

Toast.makeText(WhereMapApplication.mDemoApp.getApplicationContext(),

"請在BMapApiDemoApp.java文件輸入正確的授權Key!",?

Toast.LENGTH_LONG).show();?

WhereMapApplication.mDemoApp.m_bKeyRight?=?false;?

}?

}?

}?

@Override?

public?void?onCreate()?{?

Log.v("BMapApiDemoApp",?"onCreate");?

mDemoApp?=?this;?

mBMapMan?=?new?BMapManager(this);?

mBMapMan.init(this.mStrKey,?new?MyGeneralListener());?

mBMapMan.getLocationManager().setNotifyInternal(10,?5);?

//?if?(mBMapMan?!=?null)?{?

//?mBMapMan.destroy();?

//?mBMapMan?=?null;?

//?}?

super.onCreate();?

}?

@Override?

//建議在您app的退出之前調用mapadpi的destroy()函數,避免重復初始化帶來的時間消耗?

public?void?onTerminate()?{?

//?TODO?Auto-generated?method?stub?

if?(mBMapMan?!=?null)?{?

mBMapMan.destroy();?

mBMapMan?=?null;?

}?

super.onTerminate();

百度API地址:/wiki/static/index.htm

百度申請key地址:/wiki/static/imap/key/

註冊百度用戶,再申請key值,把key值替換以上代碼中的"申請的KEY值"。

修改AndroidManifest.xml文件中application的屬性,添加android:name=".WhereMapApplication"如下:

[html]?view?plain?copy?print?

<application?

android:name=".WhereMapApplication"?

android:icon="@drawable/ic_launcher"?

android:label="@string/app_name"?>

並且在之前添加,如果加在最後有可能會有警告產生:

[html]?view?plain?copy?print?

<uses-sdk?

android:minSdkVersion="3"?/>?

<uses-permission?android:name="android.permission.ACCESS_NETWORK_STATE"?>?

</uses-permission>?

<uses-permission?android:name="android.permission.ACCESS_FINE_LOCATION"?>?

</uses-permission>?

<uses-permission?android:name="android.permission.INTERNET"?>?

</uses-permission>?

<uses-permission?android:name="android.permission.WRITE_EXTERNAL_STORAGE"?>?

</uses-permission>?

<uses-permission?android:name="android.permission.ACCESS_WIFI_STATE"?>?

</uses-permission>?

<uses-permission?android:name="android.permission.CHANGE_WIFI_STATE"?>?

</uses-permission>?

<uses-permission?android:name="android.permission.READ_PHONE_STATE"?>?

</uses-permission>?

<supports-screens?

android:anyDensity="true"?

android:largeScreens="true"?

android:normalScreens="true"?

android:resizeable="true"?

android:smallScreens="true"?/>

如果想使用在activity裏面,就需要新建壹個自定義的activity繼承自MapActivity。我創建了壹個MainActivity,如下:

[html]?view?plain?copy?print?

public?class?MainActivity?extends?MapActivity?{?

@Override?

public?void?onCreate(Bundle?savedInstanceState)?{?

super.onCreate(savedInstanceState);?

setContentView(R.layout.activity_main);?

WhereMapApplication?app?=?(WhereMapApplication)this.getApplication();?

if?(app.mBMapMan?==?null)?{?

app.mBMapMan?=?new?BMapManager(getApplication());?

app.mBMapMan.init(app.mStrKey,?new?WhereMapApplication.MyGeneralListener());?

}?

app.mBMapMan.start();?

//?如果使用地圖SDK,請初始化地圖Activity?

//?long?iTime?=?System.nanoTime();?

super.initMapActivity(app.mBMapMan);?

//iTime?=?System.nanoTime()?-?iTime;?

//Log.d("MapViewDemo",?"the?init?time?is?"?+?iTime);?

MapView?mapView?=?(MapView)findViewById(R.id.bmapView);?

mapView.setBuiltInZoomControls(true);?

}?

@Override?

public?boolean?onCreateOptionsMenu(Menu?menu)?{?

getMenuInflater().inflate(R.menu.activity_main,?menu);?

return?true;?

}?

@Override?

protected?boolean?isRouteDisplayed()?{?

//?TODO?Auto-generated?method?stub?

return?false;?

}?

@Override?

protected?void?onPause()?{?

WhereMapApplication?app?=?(WhereMapApplication)this.getApplication();?

if(app.mBMapMan?!=?null?)?

app.mBMapMan.stop();?

super.onPause();?

}?

@Override?

protected?void?onResume()?{?

WhereMapApplication?app?=?(WhereMapApplication)this.getApplication();?

app.mBMapMan.start();?

super.onResume();?

}?

}

BMapManager在application中new之後,使用init初始化之後,在需要的activity裏面使用start,stop就可以控制map的顯示和關閉:

[java]?view?plain?copy?print?

public?class?MainActivity?extends?MapActivity?{?

@Override?

public?void?onCreate(Bundle?savedInstanceState)?{?

super.onCreate(savedInstanceState);?

setContentView(R.layout.activity_main);?

WhereMapApplication?app?=?(WhereMapApplication)this.getApplication();?

if?(app.mBMapMan?==?null)?{?

app.mBMapMan?=?new?BMapManager(getApplication());?

app.mBMapMan.init(app.mStrKey,?new?WhereMapApplication.MyGeneralListener());?

}?

app.mBMapMan.start();?

//?如果使用地圖SDK,請初始化地圖Activity?

//?long?iTime?=?System.nanoTime();?

super.initMapActivity(app.mBMapMan);?

//iTime?=?System.nanoTime()?-?iTime;?

//Log.d("MapViewDemo",?"the?init?time?is?"?+?iTime);?

MapView?mapView?=?(MapView)findViewById(R.id.bmapView);?

mapView.setBuiltInZoomControls(true);?

}?

@Override?

public?boolean?onCreateOptionsMenu(Menu?menu)?{?

getMenuInflater().inflate(R.menu.activity_main,?menu);?

return?true;?

}?

@Override?

protected?boolean?isRouteDisplayed()?{?

//?TODO?Auto-generated?method?stub?

return?false;?

}?

@Override?

protected?void?onPause()?{?

WhereMapApplication?app?=?(WhereMapApplication)this.getApplication();?

if(app.mBMapMan?!=?null?)?

app.mBMapMan.stop();?

super.onPause();?

}?

@Override?

protected?void?onResume()?{?

WhereMapApplication?app?=?(WhereMapApplication)this.getApplication();?

app.mBMapMan.start();?

super.onResume();?

}?

}

這個時候已經能顯示出地圖了,不過是在模擬器上測試的,沒有真機,只能先寫在這裏了。其余如打點,搜索等功能在官方代碼中均有詳細說明,就不壹壹描述了。

  • 上一篇:2020年微信如何精準引流
  • 下一篇:建設商城網站需要註意哪些地方?
  • copyright 2024編程學習大全網