百度地图开发( 基于新版本V2_1_1)—显示百度地图

   又开始学习安卓了,考虑到最近众多的APP.均加入定位功能,就决定从百度地图开始学起。

一、从官网下载好百度地图API(http://developer.baidu.com/map/sdkandev-download.htm点击打开链接,解压好,备用。如下图所示:

、配置工程所需文件

1 、就是新建一个android 工程。将上述解压好的文件夹中的lib中的文件全部拷贝到工程中的lib包中。我新建的工程中自动添加有lib包,若是没有的需要新建lib包。完成后,效果如下图:

    

  2、将上述选择三个Jar包,添加到工程中。具体命令为:选中--右键“Java Build Path ” -- “add  ro Build Path ”,至此,所有的配置完成。

  

三、显示地图

1、在Manifest中添加使用权限及Android版本支持、屏幕支持;具体代码见下方:

    <!-- 添加百度地图用户权限 -->
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
    <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />

    <permission android:name="android.permission.BAIDU_LOCATION_SERVICE" >
    </permission>

    <uses-permission android:name="android.permission.BAIDU_LOCATION_SERVICE" >
    </uses-permission>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
    </uses-permission>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" >
    </uses-permission>
    <uses-permission android:name="android.permission.INTERNET" >
    </uses-permission>
    <uses-permission android:name="android.permission.ACCES_MOCK_LOCATION" >
    </uses-permission>
    
    <!-- <uses-permission android:name="android.permission.WRITE_APN_SETTINGS"></uses-permission> -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" >
    </uses-permission>
    <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
    <uses-permission android:name="android.permission.WAKE_LOCK" >
    </uses-permission>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_GPS" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.READ_SMS" />
    <uses-permission android:name="android.permission.SEND_SMS" />
    
    <!-- SDK1.5需要android.permission.GET_TASKS权限判断本程序是否为当前运行的应用? -->
    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.CAMERA" >
    </uses-permission>
    <uses-permission android:name="android.permission.RECORD_AUDIO" >
    </uses-permission>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
    </uses-permission>
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.BROADCAST_STICKY" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    
    <!-- 来电消音 -->
    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" >
    </uses-permission>
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

     <!--   添加屏幕及版本支持 -->
    <supports-screens
        android:anyDensity="true"
        android:largeScreens="true"
        android:normalScreens="false"
        android:resizeable="true"
        android:smallScreens="true" />
2、 在布局xml文件中添加地图控件,如下:

<com.baidu.mapapi.map.MapView
        android:id="@+id/bmapsView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:clickable="true" />

3、在工程的MainActivity中添加相应的功能实现代码,如下:

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.widget.Toast;

import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.MKGeneralListener;
import com.baidu.mapapi.map.MapController;
import com.baidu.mapapi.map.MapView;
import com.baidu.platform.comapi.basestruct.GeoPoint;

public class MyMapActivity extends Activity{
	
	//地图引擎管理类 加载地图引擎
	private BMapManager bMapManager = null ;
	private MapView     mapView  = null ;
	
	//添加百度地图的key 此处需替换为开发中自己申请的key
	private String keyString = "D298C0EFB220685DC5C6CA195FB2082264B0635F";
	
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		
		super.onCreate(savedInstanceState);
		
		bMapManager=new BMapManager(getApplication());
		
		//加载必要的申请的key  MKGeneralListener 监听授权的key 是否合法
		bMapManager.init(keyString, new MKGeneralListener() {
			
			@Override
			public void onGetPermissionState(int arg0) {
				
				if (arg0 == 300) {
					
					Toast.makeText(MyMapActivity.this, "输入的key有错,请核实!", 1);
				}
				
			}
			
			@Override
			public void onGetNetworkState(int arg0) {
				// TODO Auto-generated method stub
				
			}
		});  
		
		
		//注意:请在试用setContentView前初始化BMapManager对象,否则会报错
		setContentView(R.layout.activity_main);
		mapView=(MapView)findViewById(R.id.bmapsView);
		mapView.setBuiltInZoomControls(true);
		
		//设置启用内置的缩放控件
		MapController mMapController = mapView.getController();
		
		// 得到mMapView的控制权,可以用它控制和驱动平移和缩放
		GeoPoint point =new GeoPoint((int)(39.915* 1E6),(int)(116.404* 1E6));
		
		//用给定的经纬度构造一个GeoPoint,单位是微度 (度 * 1E6)
		mMapController.setCenter(point);//设置地图中心点
		mMapController.setZoom(12);//设置地图zoom级别
		
		//双击地图放大
		mapView.setDoubleClickZooming(true);
		
		//显示卫星地图
		mapView.setSatellite(true);
	}
	
	//重写以下方法。管理API
	
	@Override
	protected void onDestroy(){
		
	        mapView.destroy();
	        
	        if(bMapManager!=null){
	        	
	        	bMapManager.destroy();
	        	bMapManager=null;
	        }
	        
	        super.onDestroy();
	}
	
	@Override
	protected void onPause(){
		
	        mapView.onPause();
	        
	        if(bMapManager!=null){
	        	
	        	bMapManager.stop();
	        }
	        
	        super.onPause();
	}
	@Override
	protected void onResume(){
		
	        mapView.onResume();
	        
	        if(bMapManager!=null){
	        	
	        	bMapManager.start();
	        }
	        
	        super.onResume();
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		
		getMenuInflater().inflate(R.menu.main, menu);
		
		return true;
	}
}
4.运行百度地图,显示地图,如下:



至此,百度地图开发第一步实现百度地图的显示就完成了。在调试过程中,还曾遇到下面的问题:

java.lang.ClassNotFoundException: com.baidu.mapapi.map.MapView

  用模拟器调试的时候总是报这个错,后来,经过不断的clean,refresh。再加上采用真机测试,错误莫名奇妙的就好了。。

猜你喜欢

转载自blog.csdn.net/boy123456_happy/article/details/8971449