Android版百度地图的移动定位开发过程


一、准备工作

1、下载百度地图移动版API(Android版)开发包

开发包中包含两个文件:baidumapapi.jar和libBMapApiEngine.so

下载地址:http://dev.baidu.com/wiki/imap/index.php?title=Android%E5%B9%B3%E5%8F%B0/%E7%9B%B8%E5%85%B3%E4%B8%8B%E8%BD%BD


2、申请BaiduMapAPI Key(访问BaiduMap密钥)

申请地址:http://dev.baidu.com/wiki/imap/index.php?title=Android%E5%B9%B3%E5%8F%B0


3、创建一个Android工程

需要注意的是,与一般Android工程创建有所不同的是,需要额外做点工作,即先创建一个libs文件夹,然后将baidumapapi.jar和libBMapApiEngine.so两个文档分别拷贝libs目录及libs/armeabi目录下,并在工程属性->Java Build Path->Libraries中选择“Add JARs”,选定baidumapapi.jar,这样就可以在应用中使用百度地图API了。工程的目录结构如下图所示:


弄完上面的基础工作,我们就可以正式开始了



二、具体实施过程

1、在布局文件中添加Map控件



<?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"    ><!-- 添加Map控件 --> <com.baidu.mapapi.MapView android:id="@+id/map_View" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" /> </LinearLayout>



2、创建一个继承com.baidu.mapapi.MapActivity的类


package cn.whl.baidu.map;

import com.baidu.mapapi.BMapManager;import com.baidu.mapapi.GeoPoint;import com.baidu.mapapi.LocationListener;import com.baidu.mapapi.MKLocationManager;import com.baidu.mapapi.MapActivity;import com.baidu.mapapi.MapController;import com.baidu.mapapi.MapView;import com.baidu.mapapi.MyLocationOverlay;import android.location.Location;import android.os.Bundle;public class FirstActivity extends MapActivity {//属性//地图管理器对象private BMapManager mapManager;//地图控件private MapView mapView;//地图控件管理器private MapController mapController;//定位服务管理器对象private MKLocationManager mkLocationManager = null;//用于实时更新当前位置覆盖物private MyLocationOverlay myLocationOverlay;    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                //实例化地图管理器对象mapManager =new BMapManager(getApplication());//初始化地图管理器对象mapManager.init("22FCFCD052AAAE640F34D608D98CDED68B0744A5", null);//开启地图管理器对象mapManager.start();//初始化Activitysuper.initMapActivity(mapManager);//根据id值找到对应的控件mapView= (MapView)findViewById(R.id.map_View);//设置启用内置的缩放控件mapView.setBuiltInZoomControls(true);//构造一个经纬度点GeoPoint point=new GeoPoint((int)(27*1E6), (int)(100*1E6));//取得地图控制器对象,用于控制mapViewmapController=mapView.getController();//设置地图的中心mapController.setCenter(point);//设置地图默认的缩放级别mapController.setZoom(4);//通过地图管理器对象得到定位服务管理器对象mkLocationManager=mapManager.getLocationManager();//注册位置更新事件监听器mkLocationManager.requestLocationUpdates(new LocationListener() {@Overridepublic void onLocationChanged(Location location) {// TODO Auto-generated method stubif(location!=null){//将当前位置转换成经纬点位置形式表示GeoPoint pt=new GeoPoint((int)(location.getLatitude()*1E6), (int)(location.getLongitude()*1E6));//将当前位置设置为地图中心mapController.setCenter(pt);}}});//使用GPS定位mkLocationManager.enableProvider(MKLocationManager.MK_GPS_PROVIDER);//获取当前位置覆盖物myLocationOverlay=new MyLocationOverlay(this, mapView);//注册GPS位置更新事件,让地图能实时显示当前位置myLocationOverlay.enableMyLocation();//开启磁场感应传感器(指南针)myLocationOverlay.enableCompass();//获取Overlay列表(list),然后在其中加入当前位置的OverlaymapView.getOverlays().add(myLocationOverlay);    }@Overrideprotected boolean isRouteDisplayed() {// TODO Auto-generated method stubreturn false;}protected void onDestroy(){if(mapManager!=null){mapManager.destroy();mapManager=null;}super.onDestroy();}protected void onPause(){if(mapManager!=null){mapManager.stop();}super.onPause();}protected void onResume(){if(mapManager!=null){mapManager.start();}super.onResume();}}






3、配置AndroidManifest.xml相关设置


<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"      package="cn.whl.baidu.map"      android:versionCode="1"      android:versionName="1.0">    <application android:icon="@drawable/icon" android:label="@string/app_name">        <activity android:name=".FirstActivity"                  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 android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- 访问网络的权限 --> <uses-permission android:name="android.permission.INTERNET" /> <!-- 读写存储卡的权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 访问WIFI网络状态的权限 --> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 改变WIFI网络状态的权限 --> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!-- 读取电话状态的权限 --> <uses-permission android:name="android.permission.READ_PHONE_STATE" />  <!-- 添加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></manifest>

这样,就完成了,点击运行Android项目,发现不能显示移动定位点,这个目前还不知道其原因,不过我们可以把本项目的bin文件夹的*.apk(*代指项目名)文件安装到Android系统的手机上运行,手机上可以显示的。


更多相关文章

  1. Android(安卓)实现模拟地图定位功能
  2. [置顶] Android百度地图SDK 导航SDK2.0结合定位SDK6.0.5的导航参
  3. Android插件—H.A.X.M(硬件加速执行管理器)
  4. Android(安卓)通过高德地图获取地址的经纬度
  5. Android(安卓)解屏幕锁与点亮屏幕(来电时效果)
  6. android 手机项目集成高德地图的坑(小白请进)
  7. Android(安卓)Studio – 使用百度地图SDK教程
  8. Android实现任务管理器
  9. Android(安卓)百度地图经纬度转换成地址

随机推荐

  1. 缓存工具类封装
  2. Android界面——控件和布局
  3. Android(安卓)运行崩溃找不到so包解决方
  4. android实现发短信功能
  5. android左右滑动翻页查看图片
  6. Android 疑难问题讨论及面试题
  7. Android Button使用,ArrayList使用练习
  8. Android valueAnimator和ObjectAnimator
  9. android 4.4 phone 主叫和被动呼叫的流程
  10. android 通知 手机 媒体 数据库 更新