百度地圖SDK for Android【Demo地圖圖層】

        百度地圖SDK爲開發者提供了多種地圖展示形式,用戶可以通過相關的設置展示不同的地圖圖層,在這我將爲大家介紹如何加載不同地圖圖層及各圖層之間的切換。

        首先,我們要構建一個最基本的地圖應用,具體介紹請參考:百度地圖SDK for Android【Demo地圖展示】

        在這個工程的基礎之上我們做一定的修改。

        第一,修改佈局文件,添加控制不同圖層顯示的button控件;具體代碼如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >
    
    <!-- 放入百度地圖的mapview -->
    <com.baidu.mapapi.map.MapView android:id="@+id/bmapsView"
		android:layout_width="fill_parent"
		android:layout_height="fill_parent"
		android:clickable="true"/>

    <!-- 添加button,控制地圖顯示 -->
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="Button" />

</RelativeLayout>

        第二,在主類中初始化button對象、並設置相應的點擊事件。不同圖層的顯示使用方法setSatellite和setTraffic來實現,具體代碼如下所示:

import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.map.MapController;
import com.baidu.mapapi.map.MapView;
import com.baidu.platform.comapi.basestruct.GeoPoint;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.app.Activity;


public class MainActivity extends Activity {

	BMapManager bMapManager = null;  // 定義管理sdk的對象
	MapView mapView = null;  // 定義mapview對象

	Button button;
	int flag = 0;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		// 初始化管理對象,注意要在setContentView(R.layout.activity_main)之前初始化,否則會報錯
		bMapManager = new BMapManager(getApplication());
		bMapManager.init("您申請的key", null);
		
		setContentView(R.layout.activity_main);
		
		// 初始化mapview對象,並且設置顯示縮放控件
		mapView = (MapView) findViewById(R.id.bmapsView);
		mapView.setBuiltInZoomControls(true);
		
		// 初始化button
		button = (Button) findViewById(R.id.button1);
		button.setText("點擊進入《衛星圖》");
		
		// 定義地圖控件,獲取mapview的控制,並把地圖範圍定位北京市
		MapController mapController = mapView.getController();
		GeoPoint point =new GeoPoint((int)(39.915* 1E6),(int)(116.404* 1E6));
		mapController.setCenter(point);
		mapController.setZoom(12);
		
		// 設置button的點擊事件,根據點擊次數的變化,分別設置顯示普通地圖、實時交通圖和衛星圖
		button.setOnClickListener(new OnClickListener() 
		{
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				if(flag == 0)
				{
					flag = flag + 1;
					mapView.setSatellite(true);
					button.setText("點擊進入《實時交通圖》");
				}
				else if(flag == 1)
				{
					flag = flag + 1;
					mapView.setSatellite(false);
					mapView.setTraffic(true);
					button.setText("點擊進入《普通地圖》");
				}
				else if(flag == 2)
				{
					flag = 0;
					mapView.setTraffic(false);
					button.setText("點擊進入《衛星圖》");
				}
			}
		});
		
	}
	
	
	//注意在onResume、onDestroy和onPause中控制mapview和地圖管理對象的狀態

	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		mapView.onResume();
		if(bMapManager!=null){
			bMapManager.start();
		}
		super.onResume();
	}
	
	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		mapView.destroy();
		if(bMapManager!=null){
			bMapManager.destroy();
			bMapManager=null;
		}
		super.onDestroy();
	}
	
	@Override
	protected void onPause() {
		// TODO Auto-generated method stub
		mapView.onPause();
		if(bMapManager!=null){
			bMapManager.stop();
		}
		super.onPause();
	}

}

        各圖層的效果如下:

  

        點擊下載原工程文件!

 

        小提示:百度地圖SDK是支持地圖旋轉和3D特效的,雙指扭轉可實現地圖旋轉、雙指下滑實現3D樓宇特效


更多詳細信息請登錄百度地圖API官方網站:http://developer.baidu.com/map/
百度地圖API論壇:http://bbs.lbsyun.baidu.com/
 

發佈了36 篇原創文章 · 獲贊 55 · 訪問量 38萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章