正文  第三方集成 > 百度地图集成 >

Android学习笔记之初步学百度地图

用户在使用API之前需要获取百度地图移动版API Key,并且该KEY与您引用API的程序名称有关,具体流程请参照:申请API KEYhttp://dev.baidu.com/wiki/sta...

用户在使用API之前需要获取百度地图移动版API Key,并且该KEY与您引用API的程序名称有关,具体流程请参照:申请API KEYhttp://dev.baidu.com/wiki/static/imap/key/

百度地图API支持Android 1.5及以上系统。
 
 
<1>API添加到Andoid工程中
 
必须显得下载API开发包:点击下载http://up.2cto.com/2012/0305/20120305100544520.zip
 
 
解压之后包括两个文件baidumapapi.jar和libBMapApiEngine.so。在工程根目录下创建ibs\armeabi目录,并拷贝到其目录下。
 
在工程属性->Java Build Path->Libraries中选择“Add JARs”,选定baidumapapi.jar,确定后返回,这样您就可以在您的程序中使用API了。
 
<2>在Manifest中添加使用权限
 
这不很多人会忘记的,以定要注意。
 
[java] <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>
 <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版本支持
 
[java] <supports-screens android:largeScreens="true"
     android:normalScreens="true" android:smallScreens="true"
     android:resizeable="true" android:anyDensity="true"/>
 <uses-sdk android:minSdkVersion="3"></uses-sdk>
 <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>让创建的地图Activity继承com.baidu.mapapi.MapActivity, 并import相关类
 
代码里的import相关类有些可能用不着,这的取决你的功能。
 
你可以不用导入这些,用那个再import("alt+/"快捷键)
 
[java] 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;
     }
 }
 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中添加地图控件
 
[java] <?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>
 <?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”:
 [java] mapManager = new BMapManager(getApplication());
         mapManager.init(key, null);
         super.initMapActivity(mapManager);
          
         MapView mapView = (MapView) findViewById(R.id.mapsView);
         mapView.setBuiltInZoomControls(true);  //设置启用内置的缩放控件 
          
         MapController mapController = mapView.getController();  // 得到mMapView的控制权,可以用它控制和驱动平移和缩放 
         GeoPoint point = new GeoPoint((int) (39.915 * 1E6),
                 (int) (116.404 * 1E6));  //用给定的经纬度构造一个GeoPoint,单位是微度(度* 1E6) 
         mapController.setCenter(point);  //设置地图中心点 
         mapController.setZoom(12);    //设置地图zoom级别
 mapManager = new BMapManager(getApplication());
         mapManager.init(key, null);
         super.initMapActivity(mapManager);
        
         MapView mapView = (MapView) findViewById(R.id.mapsView);
         mapView.setBuiltInZoomControls(true);  //设置启用内置的缩放控件
         
         MapController mapController = mapView.getController();  // 得到mMapView的控制权,可以用它控制和驱动平移和缩放
         GeoPoint point = new GeoPoint((int) (39.915 * 1E6),
                 (int) (116.404 * 1E6));  //用给定的经纬度构造一个GeoPoint,单位是微度(度* 1E6)
         mapController.setCenter(point);  //设置地图中心点
         mapController.setZoom(12);    //设置地图zoom级别
 
Override以下方法,管理API:
 
 
[java] @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(); 
   } 
    
 @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();
    }
    \


摘自 落日小屋