百度地图开发(一)——地图定位

(1)BaiDuMapActivity.java

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package intvehapp.intvehapp;  
  2. import com.baidu.location.BDLocation;  
  3. import com.baidu.location.BDLocationListener;  
  4. import com.baidu.location.LocationClient;  
  5. import com.baidu.location.LocationClientOption;  
  6. import com.baidu.mapapi.SDKInitializer;  
  7. import com.baidu.mapapi.map.BaiduMap;  
  8. import com.baidu.mapapi.map.MapStatus;  
  9. import com.baidu.mapapi.map.MapStatusUpdateFactory;  
  10. import com.baidu.mapapi.map.MapView;  
  11. import com.baidu.mapapi.map.MyLocationData;  
  12. import com.baidu.mapapi.model.LatLng;  
  13.   
  14. import android.app.Activity;  
  15. import android.os.Bundle;  
  16.   
  17. public class BaiDuMapActivity extends Activity{  
  18.  /** 
  19.      * 定位SDK核心类 
  20.      */  
  21.     private LocationClient locationClient;  
  22.     /** 
  23.      * 定位监听 
  24.      */  
  25.     public MyLocationListenner myListener = new MyLocationListenner();  
  26.  /** 
  27.      * 百度地图控件 
  28.      */  
  29.     private MapView mapView;  
  30.     /** 
  31.      * 百度地图对象 
  32.      */  
  33.     private BaiduMap baiduMap;  
  34.   
  35.     boolean isFirstLoc = true// 是否首次定位  
  36.   
  37.     @Override  
  38.     public void onCreate(Bundle savedInstanceState) {  
  39.         super.onCreate(savedInstanceState);  
  40.         SDKInitializer.initialize(getApplicationContext());  
  41.         setContentView(R.layout.activity_bai_du_map);  
  42.  /** 
  43.          * 地图初始化 
  44.          */  
  45.         //获取百度地图控件  
  46.         mapView = (MapView) findViewById(R.id.bmapView);  
  47.         //获取百度地图对象  
  48.         baiduMap = mapView.getMap();  
  49.         // 开启定位图层  
  50.         baiduMap.setMyLocationEnabled(true);  
  51.         /** 
  52.          * 定位初始化 
  53.          */  
  54.         //声明定位SDK核心类  
  55.         locationClient = new LocationClient(this);  
  56.         //注册监听  
  57.         locationClient.registerLocationListener(myListener);  
  58.         //定位配置信息  
  59.         LocationClientOption option = new LocationClientOption();  
  60.         option.setOpenGps(true); // 打开gps  
  61.         option.setCoorType("bd09ll"); // 设置坐标类型  
  62.         option.setScanSpan(1000);//定位请求时间间隔  
  63.         locationClient.setLocOption(option);  
  64.         //开启定位  
  65.         locationClient.start();  
  66.     }  
  67.   
  68.     /** 
  69.      * 定位SDK监听函数 
  70.      */  
  71.     public class MyLocationListenner implements BDLocationListener {  
  72.   
  73.         @Override  
  74.         public void onReceiveLocation(BDLocation location) {  
  75.             // map view 销毁后不在处理新接收的位置  
  76.             if (location == null || mapView == null) {  
  77.                 return;  
  78.             }  
  79.             MyLocationData locData = new MyLocationData.Builder()  
  80.                     .accuracy(location.getRadius())  
  81.                     // 此处设置开发者获取到的方向信息,顺时针0-360  
  82.                     .direction(100).latitude(location.getLatitude())  
  83.                     .longitude(location.getLongitude()).build();  
  84.             baiduMap.setMyLocationData(locData);  
  85.             if (isFirstLoc) {  
  86.                 isFirstLoc = false;  
  87.                 LatLng ll = new LatLng(location.getLatitude(),  
  88.                         location.getLongitude());  
  89.                 MapStatus.Builder builder = new MapStatus.Builder();  
  90.                 builder.target(ll).zoom(18.0f);  
  91.                 baiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));  
  92.             }  
  93.         }  
  94.   
  95.         public void onReceivePoi(BDLocation poiLocation) {  
  96.         }  
  97.     }  
  98.   
  99.     @Override  
  100.     protected void onPause() {  
  101.         mapView.onPause();  
  102.         super.onPause();  
  103.     }  
  104.   
  105.     @Override  
  106.     protected void onResume() {  
  107.         mapView.onResume();  
  108.         super.onResume();  
  109.     }  
  110.   
  111.     @Override  
  112.     protected void onDestroy() {  
  113.         // 退出时销毁定位  
  114.         locationClient.stop();  
  115.         // 关闭定位图层  
  116.         baiduMap.setMyLocationEnabled(false);  
  117.         mapView.onDestroy();  
  118.         mapView = null;  
  119.         super.onDestroy();  
  120.     }  
  121.   
  122. }  

(2)activity_bai_du_map.xml:增加百度地图控件

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"  
  4.     android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"  
  5.     android:paddingRight="@dimen/activity_horizontal_margin"  
  6.     android:paddingTop="@dimen/activity_vertical_margin"  
  7.     android:paddingBottom="@dimen/activity_vertical_margin"  
  8.     tools:context="intvehapp.intvehapp.BaiDuMapActivity">  
  9.   
  10.     <com.baidu.mapapi.map.MapView  
  11.         android:id="@+id/bmapView"  
  12.         android:layout_width="match_parent"  
  13.         android:layout_height="match_parent"  
  14.         android:clickable="true" />  
  15.   
  16.   
  17. </RelativeLayout>  

(3)AndroidManifest.xml:增加百度地图SDK需要的权限、API_KEY和定位服务

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     package="intvehapp.intvehapp" >  
  4.     <!-- 百度地图API所需权限 -->  
  5.     <uses-permission android:name="android.permission.GET_ACCOUNTS" />  
  6.     <uses-permission android:name="android.permission.USE_CREDENTIALS" />  
  7.     <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />  
  8.     <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />  
  9.     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  
  10.     <uses-permission android:name="android.permission.INTERNET" />  
  11.     <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />  
  12.     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />  
  13.     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />  
  14.     <uses-permission android:name="android.permission.READ_PHONE_STATE" />  
  15.     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  
  16.     <uses-permission android:name="android.permission.BROADCAST_STICKY" />  
  17.     <uses-permission android:name="android.permission.WRITE_SETTINGS" />  
  18.     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />  
  19.     <!-- 访问精确位置的权限 -->  
  20.     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />  
  21.     <application  
  22.         android:allowBackup="true"  
  23.         android:icon="@mipmap/ic_launcher"  
  24.         android:label="@string/app_name"  
  25.         android:supportsRtl="true"  
  26.         android:theme="@style/AppTheme" >  
  27.         <activity android:name=".BaiDuMapActivity" >  
  28.             <intent-filter>  
  29.                 <action android:name="android.intent.action.MAIN" />  
  30.   
  31.                 <category android:name="android.intent.category.LAUNCHER" />  
  32.             </intent-filter>  
  33.         </activity>  
  34.         <!--百度API_KEY-->  
  35.         <meta-data  
  36.             android:name="com.baidu.lbsapi.API_KEY"  
  37.             android:value="iXDGdZtFiPifnNm6dUEFwDRXYQVeZ37V" />  
  38.         <!--百度定位服务-->  
  39.         <service  
  40.             android:name="com.baidu.location.f"  
  41.             android:enabled="true"  
  42.             android:process=":remote" >  
  43.         </service>  
  44.   
  45.     </application>  
  46.   
  47. </manifest>  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值