Android學(xué)習(xí)筆記之初步學(xué)百度地圖
用戶在使用API之前需要獲取百度地圖移動版API Key,并且該KEY與您引用API的程序名稱有關(guān),具體流程請參照:申請API KEY
百度地圖API支持Android 1.5及以上系統(tǒng)。
<1>API添加到Andoid工程中
必須顯得下載API開發(fā)包:點擊下載
解壓之后包括兩個文件baidumapapi.jar和libBMapApiEngine.so。在工程根目錄下創(chuàng)建ibs\armeabi目錄,并拷貝到其目錄下。
在工程屬性->Java Build Path->Libraries中選擇“Add JARs”,選定baidumapapi.jar,確定后返回,這樣您就可以在您的程序中使用API了。
<2>在Manifest中添加使用權(quán)限
很多人會忘記的,一定要注意。
- <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>
<3> 在Manifest中添加Android版本支持
- <supports-screens android:largeScreens="true"
- android:normalScreens="true" android:smallScreens="true"
- android:resizeable="true" android:anyDensity="true"/>
- <uses-sdk android:minSdkVersion="3"></uses-sdk>
<4> 讓創(chuàng)建的地圖Activity繼承com.baidu.mapapi.MapActivity, 并import相關(guān)類
代碼里的import相關(guān)類有些可能用不著,這的取決你的功能。
你可以不用導(dǎo)入這些,用那個再import("alt+/"快捷鍵)
- import java.util.ArrayList;
- import java.util.List;
- import android.content.Context;
- import android.graphics.Canvas;
- import android.graphics.Paint;
- import android.graphics.Point;
- import android.graphics.drawable.Drawable;
- import android.location.Location;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.View;
- import android.widget.Toast;
- import com.baidu.mapapi.BMapManager;
- import com.baidu.mapapi.GeoPoint;
- import com.baidu.mapapi.ItemizedOverlay;
- import com.baidu.mapapi.LocationListener;
- import com.baidu.mapapi.MKAddrInfo;
- import com.baidu.mapapi.MKDrivingRouteResult;
- import com.baidu.mapapi.MKGeneralListener;
- import com.baidu.mapapi.MKLocationManager;
- import com.baidu.mapapi.MKPlanNode;
- import com.baidu.mapapi.MKPoiResult;
- import com.baidu.mapapi.MKSearch;
- import com.baidu.mapapi.MKSearchListener;
- import com.baidu.mapapi.MKTransitRouteResult;
- import com.baidu.mapapi.MKWalkingRouteResult;
- import com.baidu.mapapi.MapActivity;
- import com.baidu.mapapi.MapController;
- import com.baidu.mapapi.MapView;
- import com.baidu.mapapi.MyLocationOverlay;
- import com.baidu.mapapi.Overlay;
- import com.baidu.mapapi.OverlayItem;
- import com.baidu.mapapi.PoiOverlay;
- import com.baidu.mapapi.RouteOverlay;
- import com.baidu.mapapi.TransitOverlay;
- public class MyMapActivity extends MapActivity {
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- }
- @Override
- protected boolean isRouteDisplayed() {
- return false;
- }
- }
<5> 在布局xml中添加地圖控件
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical" android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <TextView android:layout_width="fill_parent"
- android:layout_height="wrap_content" android:text="@string/hello" />
- <com.baidu.mapapi.MapView android:id="@+id/bmapsView"
- android:layout_width="fill_parent" android:layout_height="fill_parent"
- android:clickable="true" />
- </LinearLayout>
<6> 始化地圖Activity, 在地圖Activity中定義變量: BMapManager mapManager = null; 在onCreate方法中增加以下代碼,并將您申請的Key替換“我的Key”:
- mapManager = new BMapManager(getApplication());
- mapManager.init(key, null);
- super.initMapActivity(mapManager);
- MapView mapView = (MapView) findViewById(R.id.mapsView);
- mapView.setBuiltInZoomControls(true); //設(shè)置啟用內(nèi)置的縮放控件
- MapController mapController = mapView.getController(); // 得到mMapView的控制權(quán),可以用它控制和驅(qū)動平移和縮放
- GeoPoint point = new GeoPoint((int) (39.915 * 1E6),
- (int) (116.404 * 1E6)); //用給定的經(jīng)緯度構(gòu)造一個GeoPoint,單位是微度 (度 * 1E6)
- mapController.setCenter(point); //設(shè)置地圖中心點
- mapController.setZoom(12); //設(shè)置地圖zoom級別
Override以下方法,管理API:
- @Override
- protected void onDestroy() {
- if (mapManager != null) {
- mapManager.destroy();
- mapManager = null;
- }
- super.onDestroy();
- }
- @Override
- protected void onPause() {
- if (mapManager != null) {
- mapManager.stop();
- }
- super.onPause();
- }
- @Override
- protected void onResume() {
- if (mapManager != null) {
- mapManager.start();
- }
- super.onResume();
- }
源代碼下載:點擊下載