如何把API 添加到我的Android工程中?
首先在工程里新建libs文件夹,并API开发包里的baidumapapi.jar拷贝到libs根目录下,将libBMapApiEngine.so拷贝到libs\armeabi目录下。官网demo里已有这两个文件,如果要集成到自己的工程里,就需要自己添加。然后在工程属性->Java Build Path->Libraries中选择“Add External JARs”,选定baidumapapi.jar,确定后返回,这样您就可以在您的程序中使用API了。
在我的程序中显示地图
在Manifest中添加使用权限
<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>
在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>
- 让创建的地图Activity继承com.baidu.mapapi.MapActivity, 并import相关类
-
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.MKSuggestionResult ;
-
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 ;
-
}
-
}
在布局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>
初始化地图Activity/使用key
在地图Activity中定义变量: BMapManager mBMapMan = null; 在onCreate方法中增加以下代码,并将您申请的Key替换“我的Key”:
-
mBMapMan = new BMapManager (getApplication ( ) ) ;
-
mBMapMan. init ( "我的Key", null ) ;
-
super. initMapActivity (mBMapMan ) ;
-
-
MapView mMapView = (MapView ) findViewById (R. id. bmapsView ) ;
-
mMapView. setBuiltInZoomControls ( true ) ; //设置启用内置的缩放控件
-
-
MapController mMapController = mMapView. getController ( ) ; // 得到mMapView的控制权,可以用它控制和驱动平移和缩放
-
GeoPoint point = new GeoPoint ( ( int ) ( 39.915 * 1E6 ),
-
( int ) ( 116.404 * 1E6 ) ) ; //用给定的经纬度构造一个GeoPoint,单位是微度 (度 * 1E6)
-
mMapController. setCenter (point ) ; //设置地图中心点
-
mMapController. setZoom ( 12 ) ; //设置地图zoom级别
Override以下方法,管理API:
-
@Override
-
protected void onDestroy ( ) {
-
if (mBMapMan != null ) {
-
mBMapMan. destroy ( ) ;
-
mBMapMan = null ;
-
}
-
super. onDestroy ( ) ;
-
}
-
@Override
-
protected void onPause ( ) {
-
if (mBMapMan != null ) {
-
mBMapMan. stop ( ) ;
-
}
-
super. onPause ( ) ;
-
}
-
@Override
-
protected void onResume ( ) {
-
if (mBMapMan != null ) {
-
mBMapMan. start ( ) ;
-
}
-
super. onResume ( ) ;
-
}
完成上述步骤后,运行程序,结果如下:
-