1. 首先要申请百度地图的key。其地址为:http://lbsyun.baidu.com/apiconsole/key。可以按照这上面的流程去申请key值。在获取SHA1值的时候,推荐使用给的第一种方法(在cmd命令中获取,我之前使用的是从Eclipse>Window > Preferences > Android > Build复制的,但是在使用的时候出现地图加载错误)。

2. 下载百度地图提供的jar包。

勾选要使用的功能,然后下载开发包即可。我这里,使用了基础地图和定位功能,下载开发包之后,解压开,把 libs 文件夹下的内容,全部复制到你的Android项目的libs下就可以使用了。

3. 接下来需要在AndroidManifest.xml文件中,进行属性。

(1) 定位需要的权限配置

<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permissionandroid:name="android.permission.INTERNET"/><uses-permissionandroid:name="com.android.launcher.permission.READ_SETTINGS"/><uses-permissionandroid:name="android.permission.WAKE_LOCK"/><uses-permissionandroid:name="android.permission.CHANGE_WIFI_STATE"/><uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/><uses-permissionandroid:name="android.permission.GET_TASKS"/><uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permissionandroid:name="android.permission.WRITE_SETTINGS"/>

(2) 在 application 标签下配置

<meta-dataandroid:name="com.baidu.lbsapi.API_KEY"android:value="这里是你申请的key"/>

(3) 配置定位 service

<serviceandroid:name="com.baidu.location.f"android:enabled="true"android:process=":remote">

到这里AnroidManifest.xml文件里的配置工作就了。

4. 第三步写一下定位页面的布局文件

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><!--页面标题--><TextViewandroid:layout_width="match_parent"android:layout_height="50dp"android:gravity="center"android:textSize="20sp"android:text="定位页面"/><!--地图控件--><com.baidu.mapapi.map.MapViewandroid:id="@+id/mapview"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:clickable="true"></com.baidu.mapapi.map.MapView><!--回到当前位置的按钮--><Buttonandroid:id="@+id/goback"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="回到当前位置"/></LinearLayout>

5. 最后就要写实现代码了

publicclassLocationActivityextendsActivity{privateMapViewmMapView=null;privateBaiduMapmBaiduMap;privateLocationClientmLocationClient=null;privateBDLocationListenerlistener=newMyLocationListener();privateButtongoBack;privateBDLocationlocation;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){//TODOAuto-generatedmethodstubsuper.onCreate(savedInstanceState);//在使用SDK各组件之前初始化context信息,传入ApplicationContext//注意该方法要再setContentView方法之前实现SDKInitializer.initialize(getApplicationContext());setContentView(R.layout.activity_location);mLocationClient=newLocationClient(this);mLocationClient.registerLocationListener(listener);mMapView=(MapView)findViewById(R.id.mapview);mBaiduMap=mMapView.getMap();mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);//开启定位图层mBaiduMap.setMyLocationEnabled(true);//定位的方法findLocation();goBack=(Button)findViewById(R.id.goback);location=newBDLocation();goBack.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){findLocation();}});}@OverrideprotectedvoidonDestroy(){//TODOAuto-generatedmethodstubsuper.onDestroy();//关闭定位图层mBaiduMap.setMyLocationEnabled(false);mMapView.onDestroy();mLocationClient.stop();}@OverrideprotectedvoidonResume(){//TODOAuto-generatedmethodstubsuper.onResume();mMapView.onResume();}@OverrideprotectedvoidonPause(){//TODOAuto-generatedmethodstubsuper.onPause();mMapView.onPause();}//定位方法封装publicvoidfindLocation(){if(mLocationClient.isStarted()){mLocationClient.stop();}LocationClientOptionoption=newLocationClientOption();option.setOpenGps(true);//打开gpsoption.setCoorType("bd09ll");//设置坐标类型option.setScanSpan(0);mLocationClient.setLocOption(option);//开始定位mLocationClient.start();}classMyLocationListenerimplementsBDLocationListener{@OverridepublicvoidonReceiveLocation(BDLocationlocation){//TODOAuto-generatedmethodstub//mapview销毁后不在处理新接收的位置if(location==null||mMapView==null){return;}MyLocationDatalocData=newMyLocationData.Builder().accuracy(location.getRadius()).direction(100).latitude(location.getLatitude()).longitude(location.getLongitude()).build();mBaiduMap.setMyLocationData(locData);LatLngll=newLatLng(location.getLatitude(),location.getLongitude());MapStatusUpdateu=MapStatusUpdateFactory.newLatLng(ll);mBaiduMap.animateMapStatus(u);}}}

这样的一个Android定位的Demo就写好了。
















更多相关文章

  1. Android(安卓)Fragment完全解析
  2. Android(安卓)自定义ViewPager的滑动速度
  3. Android(安卓)Bitmap内存限制问题
  4. Android(安卓)Activity与Service数据交互:Binder、bindService(系
  5. Android按钮文字变色(使用 ColorStateList)
  6. Android(安卓)开发中,有哪些坑需要注意?
  7. 自定义Drawable
  8. Android事件处理--读书笔记
  9. Android(安卓)DiskLruCache完全解析,硬盘缓存的最佳方案

随机推荐

  1. 一位一年android开发者的瓶颈
  2. Android 四大组件之Activity
  3. android 调试
  4. 招聘正在进行时,315晚会使用的高科技产品,
  5. Activity源码之Android(安卓)6.0权限相关
  6. Andriod 从源码的角度详解View,ViewGroup
  7. Eclipse与Android源码中ProGuard工具的使
  8. Anroid-vlc开源播放器代码编译及简单调用
  9. Android应用程序窗口(Activity)的窗口对象(W
  10. 微信 JSSDK 在 Android(安卓)和 iOS 的一