天天看點

百度地圖在android的使用

步驟一:在百度開放平台下載下傳到百度地圖的sdk,然後導入到項目中,申請到自己的appkey。

步驟二:建立layout,這個可以自由發揮

<com.baidu.mapapi.map.MapView
        android:id="@+id/bmapView"
        android:layout_width="fill_parent"
        android:layout_height="0.0px"
        android:layout_weight="2.07"
         android:clickable="true" />
           

步驟三:建立activity。

private static LocationData locationData = new LocationData();

static MapView mMapView;

public LocationClient mLocationClient = null;

public BDLocationListener myListener = new MyLocationListener();

private MapController mMapController;

private MKSearch mkSearch;

private GeoPoint point2;

private MKMapViewListener mMapListener = null;

private LocationClientOption option;

必須在oncreate中初始化百度地圖的key,而且是在setContentView的前面初始化。

MapController 是對地圖的控制,比如縮放,zoom級别,地圖的中心點等等

mMapController.setCenter(point);// 設定地圖中心點

mMapController.setZoom(15);// 設定地圖zoom級别

mMapController.enableClick(true);

mMapView.setOnTouchListener(null);

定位的核心代碼:BDLocationListener

private class MyLocationListener implements BDLocationListener {

// 大概一秒鐘定位一次

@Override

public void onReceiveLocation(BDLocation location) {

if (location == null)

return;

if (flag_new == true) {

myPoint = new GeoPoint((int) (location.getLatitude() * 1e6),

(int) (location.getLongitude() * 1e6));

locationData.latitude = location.getLatitude();

locationData.longitude = location.getLongitude();

locationData.direction = 2.0f;

locationData.accuracy = location.getRadius();// 擷取服務

locationData.direction = location.getDerect();

// strAdd = location.getAddrStr().toString();

mMapView.refresh();// 此處重新整理必須有

// 定位本地位置,此句沒有,則無法定位

mMapController.animateTo(new GeoPoint(

(int) (locationData.latitude * 1e6),

(int) (locationData.longitude * 1e6)));

MyLocationOverlay myLocationOverlay = new MyLocationOverlay(

mMapView);

// 手動将位置源置為天安門,在實際應用中,請使用百度定位SDK擷取位置資訊,要在SDK中顯示一個位置,需要

// 使用百度經緯度坐标(bd09ll)

locationData.direction = 2.0f;

myLocationOverlay.setData(locationData);

mMapView.getOverlays().add(myLocationOverlay);

mMapView.refresh();

mMapView.getController().animateTo(

new GeoPoint((int) (lat), (int) (lon)));

flag_new = false;

}

}

要進行路線的查詢的就要實作MKSearch()中的MKSearchListener()

其實百度地圖給出了很詳細的api資料了,可以對着來一步一步實作。