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

迷途d书童 发布于 2012/03/05 14:38
阅读 3K+
收藏 3

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

百度地图API支持Android 1.5及以上系统。

<1>API添加到Andoid工程中

必须显得下载API开发包:点击下载

解压之后包括两个文件baidumapapi.jar和libBMapApiEngine.so。在工程根目录下创建ibs\armeabi目录,并拷贝到其目录下。

在工程属性->Java Build Path->Libraries中选择“Add JARs”,选定baidumapapi.jar,确定后返回,这样您就可以在您的程序中使用API了。

<2>在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>

<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> 让创建的地图Activity继承com.baidu.mapapi.MapActivity, 并import相关类

代码里的import相关类有些可能用不着,这的取决你的功能。

你可以不用导入这些,用那个再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);  //设置启用内置的缩放控件
         
        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:

 @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();
    }
    




源代码下载:点击下载





原文链接:http://blog.csdn.net/sjf0115/article/details/7319468
加载中
0
忧郁地奥特曼
不显示底图是怎么回事
郝炯淞
郝炯淞
估计是你的API Key不对
忧郁地奥特曼
回复 @迷途d书童 : 是啊,照做了,可是没出现底图。
迷途d书童
迷途d书童
我是我转载的哦,你下载了源码也是这样吗?
0
每周精粹
每周精粹
是创建map api 工程?
0
马里士多德
报错了说。。。。也按步骤做了。。。
0
马里士多德

问题已解决。引用原文网友评论 1.两个文件baidumapapi.jar和libBMapApiEngine.so。2.在工程根目录下创建ibs\armeabi目录,并拷贝到其目录下。这个应该是libs\armeabi吧,而且应该是baidumapapi.jar在libs下,libBMapApiEngine.so在libs\armeabi下吧

0
冯新
冯新
移动地图 有bug 
返回顶部
顶部