android编程——百度地图初探

项目需要,花了一天时间研究了下百度地图的API,其实看起来可能会有点困难,但是将它的DEMO跑起来之后一切都迎刃而解的样子了。百度方面讲地图的接口封装的挺不错的,而且现在能够提供的地图的服务也有将近十项之多。虽然相比谷歌地图可能有些性能会有些欠缺,但是在天朝还是百度地图用起来比较的方便一些。

使用百度地图需要申请身份验证的KEY,如果有百度开发者账号的话几秒钟就可以申请到的。当然先下载好百度地图的SDK自不必多说。

第一步:首先要配置好工程所需的SDK资源文件,如图所示:

andorid_dev1.jpg

    并且在工程属性->Java Build Path->Libraries中选择“Add External JARs”,选定baidumapapi_v2_1_3.jar。通过以上两步操作后,您就可以正常使用百度地图SDK为您提供的全部功能了。

第二步:创建并且配置好工程之后,需要在Mainfest中添加使用权限;并且配置好自己的Activity。这是我的项目中的Mainfest.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.test"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="7"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.test.MainActivity"
            android:screenOrientation="sensor"
            android:configChanges="orientation"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
	
    <!--使用网络功能所需权限  -->
	<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE">
	</uses-permission>
	<uses-permission android:name="android.permission.INTERNET">
	</uses-permission>
	<uses-permission android:name="android.permission.ACCESS_WIFI_STATE">
	</uses-permission>
	<uses-permission android:name="android.permission.CHANGE_WIFI_STATE">
	</uses-permission>
	<!-- SDK离线地图和cache功能需要读写外部存储器 -->
	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">
	</uses-permission>
	<!-- 获取设置信息和详情页直接拨打电话需要以下权限  -->
	<uses-permission android:name="android.permission.READ_PHONE_STATE">
	</uses-permission>
	<uses-permission android:name="android.permission.CALL_PHONE">
	</uses-permission>
	<!-- 使用定位功能所需权限,demo已集成百度定位SDK,不使用定位功能可去掉以下6项 -->
	<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION">
	</uses-permission>
	<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_COARSE_LOCATION">
	</uses-permission>
	<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION">
	</uses-permission>
	<uses-permission android:name="android.permission.ACCESS_GPS"/>   
	
	<supports-screens 
	    	android:largeScreens="true"
			android:normalScreens="true"
			android:smallScreens="true"
			android:resizeable="true"
			android:anyDensity="true"/>
		    
</manifest>
第三 步: 在布局xml文件中添加地图控件。主要是添加了一个MapView的地图控件。如下是我的项目的activity_main.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="hello world" />
	        <com.baidu.mapapi.map.MapView android:id="@+id/bmapsView"
	                android:layout_width="fill_parent"
	                android:layout_height="fill_parent"
	                android:clickable="true" />
</LinearLayout>
第四步:按照所需编写.java代码
package com.example.test;

import android.app.Activity;
import android.content.res.Configuration;
import android.os.Bundle;
import android.view.Menu;
import android.widget.FrameLayout;
import android.widget.Toast;

import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.map.MKMapViewListener;
import com.baidu.mapapi.map.MapController;
import com.baidu.mapapi.map.MapPoi;
import com.baidu.mapapi.map.MapView;
import com.baidu.platform.comapi.basestruct.GeoPoint;
	 
public class MainActivity extends Activity{
	BMapManager mBMapMan = null;
	MapView mMapView = null;
	
	@Override
	public void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
		
		mBMapMan=new BMapManager(getApplication());
		mBMapMan.init("AF7523feaa132765be6434f70fc239e1", null);  
		//注意:请在试用setContentView前初始化BMapManager对象,否则会报错
		
		setContentView(R.layout.activity_main);
		mMapView=(MapView)findViewById(R.id.bmapsView);
		mMapView.setBuiltInZoomControls(true);
		//设置启用内置的缩放控件
		MapController mMapController=mMapView.getController();
		// 得到mMapView的控制权,可以用它控制和驱动平移和缩放
		GeoPoint point =new GeoPoint((int)(30* 1E6),(int)(10* 1E6));
		//用给定的经纬度构造一个GeoPoint,单位是微度 (度 * 1E6)
		mMapController.setCenter(point);//设置地图中心点
		mMapController.setZoom(12);//设置地图zoom级别
	}
	
	@Override
	protected void onDestroy(){
	        mMapView.destroy();
	        if(mBMapMan!=null){
	                mBMapMan.destroy();
	                mBMapMan=null;
	        }
	        super.onDestroy();
	}
	@Override
	protected void onPause(){
	        mMapView.onPause();
	        if(mBMapMan!=null){
                mBMapMan.stop();
	        }
	        super.onPause();
	}
	@Override
	protected void onResume(){
	        mMapView.onResume();
	        if(mBMapMan!=null){
	                mBMapMan.start();
	        }
        super.onResume();
	}
} 
然后就可以运行这个DEMO,默认的地点是北京的天安门。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值