Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android百度地圖之定位SDK(v3.1)使用示例(三)

Android百度地圖之定位SDK(v3.1)使用示例(三)

編輯:Android開發實例

實踐需求:通過GPS或者3G/2G網絡(基站)定位,並將定位的結果(我當前的位置)標注在百度地圖上。

當用戶點擊地圖上代表“我的當前位置”的點時,顯示當前我所在位置的詳細信息。

一、通過GPS或者3G/2G網絡(基站)定位。

      基於 Android百度地圖之定位SDK(v3.1)使用示例(一) 和 Android百度地圖之定位SDK(v3.1)使用示例(二) 這兩篇的積澱,導入百度提供的so和jar文件及在AndroidManifest.xml文件添加相應的配置等等就不羅嗦了,不了解的請查看前面的。

注意:由於要使用百度的提供的定位服務,所以在AndroidManifest.xml文件中一定要記得添加Service。(若沒添加,運行不報錯,也沒有任何效果。)

設置定位參數,注冊定位結果接收器。代碼如下:

  1. mLocationClient = new LocationClient(this.getApplicationContext());  
  2.        mLocationListener = new MyLocationListener();  
  3.        mLocationClient.registerLocationListener(mLocationListener);  
  4.  
  5.        LocationClientOption locationOption = new LocationClientOption();  
  6.        locationOption.setOpenGps(true);  
  7.        locationOption.setCoorType("bd09ll");  
  8.        locationOption.setPriority(LocationClientOption.GpsFirst);  
  9.        locationOption.setAddrType("all");  
  10.        locationOption.setProdName("通過GPS定位");  
  11.        mLocationClient.setLocOption(locationOption);  
  12.  
  13.        Log.i(TAG, "BaiduMapMyLocationActivity 開啟定位");  
  14.        mLocationClient.start();  

二、將定位的結果(我當前的位置)標注在百度地圖上。
        1、在前面為 mLocationClient對象注冊了BDLocationListener,自定義類實現BDLocationListener接口,處理定位得到的結果,具體代碼如下:

  1. class MyLocationListener implements BDLocationListener {  
  2.       @Override 
  3.       public void onReceiveLocation(BDLocation location) {  
  4.           if (location == null) {  
  5.               return;  
  6.           }  
  7.  
  8.           Log.i(TAG, "BaiduMapMyLocationActivity onReceiveLocation()");  
  9.  
  10.           // TODO 為方便測試查看  
  11.           testLog(location);  
  12.  
  13.           // 在地圖上標注定位得到我當前的位置  
  14.           markLocation(location);  
  15.  
  16.           mBDLocation = location;  
  17.       }  
  18.  
  19.       @Override 
  20.       public void onReceivePoi(BDLocation arg0) {  
  21.             
  22.       }  
  23.   }  

         2、構建一個負責在地圖上顯示用戶當前位置的Overlay對象及為該Overlay對象設置數據。

  1. mLocationOverlay = new LocationOverlay(mMapView);  
  2.      // 百度官方API文檔解釋:打開指南針,但是我試驗覺得默認指南針就是打開的  
  3.       // mLocationOverlay.enableCompass();  
  4.      locData = new LocationData();  
  5.      mLocationOverlay.setData(locData);  

        3、將負責在地圖上顯示用戶當前位置的Overlay對象添加到覆蓋物列表中,並刷新地圖視圖view。

  1. mMapView.getOverlays().add(mLocationOverlay);  
  2.      mMapView.refresh();  

        4、將我的當前位置移動到地圖的中心點

  1. mMapController.animateTo(new GeoPoint(  
  2.                      (int) (locData.latitude * 1e6),   
  3.                      (int) (locData.longitude * 1e6)));  

三、當用戶點擊地圖上代表“我的當前位置”的點時,顯示當前我所在位置的詳細信息。自定義類繼承MyLocationOverlay,重寫 protected boolean dispatchTap() {}方法,在方法體中添加相應的處理即可。

  1. class LocationOverlay extends MyLocationOverlay {  
  2.  
  3.       public LocationOverlay(MapView mapView) {  
  4.           super(mapView);  
  5.       }  
  6.  
  7.       // 處理在“我的位置”坐標上的點擊事件。  
  8.       @Override 
  9.       protected boolean dispatchTap() {  
  10.           Log.i(TAG, "BaiduMapMyLocationActivity 處理在“我的位置”坐標上的點擊事件 dispatchTap()");  
  11.  
  12.           if (mBDLocation != null) {  
  13.               showLocation(mBDLocation);  
  14.           }  
  15.  
  16.           return super.dispatchTap();  
  17.       }  
  18.  
  19.   }  

四、運行效果圖

點擊地圖上的藍色指南針圖標,效果圖如下:

點擊上圖黑色區域,該區域消失;點擊“重新定位”按鈕,重新獲取我當前的位置。

注:我在房子采用的是Wifi網絡定位,所以地址信息不為null。

五、我發現存在的問題:

      1、百度最新API與API文檔中描述個別不符

            a. 這行mLocationOverlay.enableCompass();代碼,百度官方API文檔解釋:打開指南針,但是我經過測試,覺得默認指南針就是打開的。

            b. 地圖引擎管理類BMapManager,API文檔中描述:boolean start() // 開啟百度地圖API;boolean stop() // 終止百度地圖API,調用此函數後,不會再發生回調。實際上使用最新的SDK中的BMapManager類創建的對象已經沒有什麼start、stop方法。

        2、當調用 mLocationClient.start(); (LocationClient類實例化後,調用它的start方法。)後,會重新執行一次BaiduMapApplication(# class BaiduMapApplication extends Application{})的onCreate()回調方法。目前道沒發現影響使用,但是我個人覺得:若之前已執行過,也就是說初始化過地圖引擎類,就不應該再次初始化。不知道這個算是個問題不?官方給的demo裡也存在這個問題,怎麼解決?(資源浪費使用)

六、完整代碼:

AndroidManifest.xml文件配置:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     package="com.easi.baidu.map" 
  4.     android:versionCode="1" 
  5.     android:versionName="1.0" > 
  6.  
  7.     <uses-sdk android:minSdkVersion="8" /> 
  8.  
  9.     <application 
  10.         android:icon="@drawable/ic_launcher" 
  11.         android:label="@string/app_name" 
  12.         android:name=".BaiduMapApplication" > 
  13.         <activity 
  14.             android:configChanges="keyboardHidden|orientation" 
  15.             android:label="@string/app_name" 
  16.             android:name=".BaiduMapMyLocationActivity" 
  17.             android:screenOrientation="sensor" > 
  18.             <intent-filter > 
  19.                 <action android:name="android.intent.action.MAIN" /> 
  20.  
  21.                 <category android:name="android.intent.category.LAUNCHER" /> 
  22.             </intent-filter> 
  23.         </activity> 
  24.  
  25.         <service 
  26.             android:enabled="true" 
  27.             android:name="com.baidu.location.f" 
  28.             android:process=":remote" /> 
  29.     </application> 
  30.  
  31.     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" > 
  32.     </uses-permission> 
  33.     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" > 
  34.     </uses-permission> 
  35.     <uses-permission android:name="android.permission.INTERNET" > 
  36.     </uses-permission> 
  37.     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" > 
  38.     </uses-permission> 
  39.     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" > 
  40.     </uses-permission> 
  41.     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" > 
  42.     </uses-permission> 
  43.     <uses-permission android:name="android.permission.READ_PHONE_STATE" > 
  44.     </uses-permission> 
  45.     <uses-permission android:name="android.permission.CALL_PHONE" > 
  46.     </uses-permission> 
  47.  
  48.     <permission android:name="android.permission.BAIDU_LOCATION_SERVICE" > 
  49.     </permission> 
  50.  
  51.     <uses-permission android:name="android.permission.BAIDU_LOCATION_SERVICE" > 
  52.     </uses-permission> 
  53.     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" > 
  54.     </uses-permission> 
  55.     <uses-permission android:name="android.permission.ACCES_MOCK_LOCATION" > 
  56.     </uses-permission> 
  57.     <uses-permission android:name="android.permission.ACCESS_GPS" /> 
  58.  
  59.     <supports-screens 
  60.         android:anyDensity="true" 
  61.         android:largeScreens="true" 
  62.         android:normalScreens="false" 
  63.         android:resizeable="true" 
  64.         android:smallScreens="true" /> 
  65.  
  66. </manifest> 

初始化地圖引擎對象,存放共享資源,繼承自Application。

  1. package com.easi.baidu.map;  
  2.  
  3. import android.app.Application;  
  4. import android.content.Context;  
  5. import android.util.Log;  
  6. import android.widget.Toast;  
  7.  
  8. import com.baidu.mapapi.BMapManager;  
  9. import com.baidu.mapapi.MKGeneralListener;  
  10. import com.baidu.mapapi.map.MKEvent;  
  11.  
  12. /**  
  13.  * 初始化地圖引擎對象,存放共享資源。  
  14.  * 需要在AndroidMinifest.xml文件中的application標簽添加name屬性。  
  15.  * [email protected] #<application android:name=".BaiduMapApplication" >}  
  16.  * @author android_ls  
  17.  */ 
  18. public class BaiduMapApplication extends Application {  
  19.  
  20.     /**  
  21.      * 申請的百度地圖API Key密鑰  
  22.      */ 
  23.     private static final String BAIDU_MAP_KEY = "8BB7F0E5C9C77BD6B9B655DB928B74B6E2D838FD";  
  24.  
  25.     /**  
  26.      * Log打印標簽  
  27.      */ 
  28.     private static final String TAG = "BaiduMapApplication";  
  29.  
  30.     /* package */BMapManager mMapManager;  
  31.  
  32.     /* package */Context mContext;  
  33.  
  34.     @Override 
  35.     public void onCreate() {  
  36.         super.onCreate();  
  37.         Log.i(TAG, "BaiduMapApplication onCreate()");  
  38.  
  39.         mContext = getApplicationContext();  
  40.         mMapManager = new BMapManager(getApplicationContext());  
  41.  
  42.         initMapManager();  
  43.     }  
  44.  
  45.     /**  
  46.      * 初始化BMapManager對象  
  47.      *   
  48.      * @return boolean  
  49.      */ 
  50.     public void initMapManager() {  
  51.         boolean result = mMapManager.init(BAIDU_MAP_KEY, new MKGeneralListener() {  
  52.  
  53.             @Override 
  54.             public void onGetNetworkState(int error) {  
  55.                 if (error == MKEvent.ERROR_NETWORK_CONNECT) {  
  56.                     Toast.makeText(mContext, "您的網絡出錯啦!", Toast.LENGTH_LONG).show();  
  57.                 } else if (error == MKEvent.ERROR_NETWORK_DATA) {  
  58.                     Toast.makeText(mContext, "輸入正確的檢索條件!", Toast.LENGTH_LONG).show();  
  59.                 }  
  60.             }  
  61.  
  62.             @Override 
  63.             public void onGetPermissionState(int error) {  
  64.                 if (error == MKEvent.ERROR_PERMISSION_DENIED) {  
  65.                     // 授權Key錯誤:  
  66.                     Toast.makeText(mContext, "您的授權Key出錯!", Toast.LENGTH_LONG).show();  
  67.                 }  
  68.             }  
  69.  
  70.         });  
  71.  
  72.         if (!result) {  
  73.             Toast.makeText(mContext, "初始化地圖引擎失敗!", Toast.LENGTH_LONG).show();  
  74.         } else {  
  75.             Log.i(TAG, "地圖引擎初始化成功!");  
  76.         }  
  77.     }  
  78.  
  79.     @Override 
  80.     public void onTerminate() {  
  81.         Log.i(TAG, "BaiduMapApplication onTerminate()");  
  82.  
  83.         if (mMapManager != null) {  
  84.             mMapManager.destroy();  
  85.             mMapManager = null;  
  86.         }  
  87.  
  88.         super.onTerminate();  
  89.     }  
  90.  
  91. }  
  92.  

需要用到百度地圖的Activity基類,繼承自Activity

  1. package com.easi.baidu.map;  
  2.  
  3. import android.app.Activity;  
  4. import android.content.res.Configuration;  
  5. import android.os.Bundle;  
  6. import android.util.Log;  
  7.  
  8. import com.baidu.mapapi.BMapManager;  
  9. import com.baidu.mapapi.map.MapController;  
  10. import com.baidu.mapapi.map.MapView;  
  11.  
  12. /**  
  13.  * 需要用到百度地圖的Activity基類  
  14.  * #public class BaiduMapMyLocationActivity extends BaiduMapBaseActivity{}  
  15.  * @author android_ls  
  16.  */ 
  17. public abstract class BaiduMapBaseActivity extends Activity {  
  18.  
  19.     /**  
  20.      * Application對象的引用  
  21.      */ 
  22.     protected BaiduMapApplication mApplication;  
  23.  
  24.     /**  
  25.      * 顯示地圖的View組件  
  26.      */ 
  27.     protected MapView mMapView;  
  28.  
  29.     /**  
  30.      * MapView控制器對象的引用  
  31.      */ 
  32.     protected MapController mMapController;  
  33.  
  34.     @Override 
  35.     public void onCreate(Bundle savedInstanceState) {  
  36.         super.onCreate(savedInstanceState);  
  37.           
  38.         mApplication = (BaiduMapApplication) this.getApplication();  
  39.  
  40.         if (mApplication.mMapManager == null) {  
  41.             Log.e("BaiduMapApplication", "BaiduMapBaseActivity mApplication.mMapManager is NULL!");  
  42.               
  43.             mApplication.mMapManager = new BMapManager(mApplication.mContext);  
  44.             mApplication.initMapManager();  
  45.         }  
  46.  
  47.         setContentView(getLayoutId());  
  48.           
  49.         mMapView = (MapView) this.findViewById(getMapViewId());  
  50.         mMapController = mMapView.getController();  
  51.     }  
  52.  
  53.     /**  
  54.      * 獲取代表布局文件的ID  
  55.      * #setContentView(getLayoutId());  
  56.      * @return int  
  57.      */ 
  58.     public abstract int getLayoutId();  
  59.       
  60.     /**  
  61.      * 獲取代表MapView對象的組件ID  
  62.      * #(MapView) this.findViewById(getMapViewId());  
  63.      * @return int  
  64.      */ 
  65.     public abstract int getMapViewId();  
  66.       
  67.     @Override 
  68.     protected void onPause() {  
  69.         mMapView.onPause();  
  70.         super.onPause();  
  71.     }  
  72.  
  73.     @Override 
  74.     protected void onResume() {  
  75.         mMapView.onResume();  
  76.         super.onResume();  
  77.     }  
  78.  
  79.     @Override 
  80.     protected void onDestroy() {  
  81.         mMapView.destroy();  
  82.         super.onDestroy();  
  83.     }  
  84.  
  85.     @Override 
  86.     protected void onSaveInstanceState(Bundle outState) {  
  87.         super.onSaveInstanceState(outState);  
  88.         mMapView.onSaveInstanceState(outState);  
  89.  
  90.     }  
  91.  
  92.     @Override 
  93.     protected void onRestoreInstanceState(Bundle savedInstanceState) {  
  94.         super.onRestoreInstanceState(savedInstanceState);  
  95.         mMapView.onRestoreInstanceState(savedInstanceState);  
  96.     }  
  97.  
  98.     @Override 
  99.     public void onConfigurationChanged(Configuration newConfig) {  
  100.         super.onConfigurationChanged(newConfig);  
  101.     }  
  102. }  
  103.  

定位功能具體實現類,繼承自BaiduMapBaseActivity

  1. package com.easi.baidu.map;  
  2.  
  3. import android.os.Bundle;  
  4. import android.util.Log;  
  5. import android.view.View;  
  6. import android.widget.TextView;  
  7.  
  8. import com.baidu.location.BDLocation;  
  9. import com.baidu.location.BDLocationListener;  
  10. import com.baidu.location.LocationClient;  
  11. import com.baidu.location.LocationClientOption;  
  12. import com.baidu.mapapi.map.LocationData;  
  13. import com.baidu.mapapi.map.MapView;  
  14. import com.baidu.mapapi.map.MyLocationOverlay;  
  15. import com.baidu.platform.comapi.basestruct.GeoPoint;  
  16.  
  17. /**  
  18.  * 提供通過GPS或者3G/2G網絡(基站)定位,並將定位的結果(我當前的位置)標注在百度地圖上。  
  19.  * 當用戶點擊地圖上代表“我的當前位置”的點時,顯示當前我所在位置的詳細信息。  
  20.  *   
  21.  * 注:當gps可用,而且獲取了定位結果時,不再發起網絡請求,直接返回給用戶坐標。  
  22.  * 如果gps不可用,再發起網絡請求,進行定位。  
  23.  * @author android_ls  
  24.  *  
  25.  */ 
  26. public class BaiduMapMyLocationActivity extends BaiduMapBaseActivity {  
  27.  
  28.     /**  
  29.      * Log打印標簽  
  30.      */ 
  31.     private static final String TAG = "BaiduMapMyLocationActivity";  
  32.  
  33.     /**  
  34.      * 定位SDK的核心類  
  35.      */ 
  36.     private LocationClient mLocationClient;  
  37.  
  38.     /**  
  39.      * 顯示定位結果詳細信息的View  
  40.      */ 
  41.     private TextView tvLocationResult;  
  42.  
  43.     /**  
  44.      * 標注我的位置的覆蓋物  
  45.      * # class LocationOverlay extends MyLocationOverlay{}  
  46.      */ 
  47.     private MyLocationOverlay mLocationOverlay;  
  48.  
  49.     /**  
  50.      * 我的位置信息數據  
  51.      */ 
  52.     private LocationData locData;  
  53.  
  54.     /**  
  55.      * 定位結果處理器  
  56.      * # class MyLocationListener implements BDLocationListener{}  
  57.      */ 
  58.     private MyLocationListener mLocationListener;  
  59.  
  60.     /**  
  61.      * 暫時緩存我的當前位置數據  
  62.      */ 
  63.     private BDLocation mBDLocation;  
  64.  
  65.     @Override 
  66.     public void onCreate(Bundle savedInstanceState) {  
  67.         super.onCreate(savedInstanceState);  
  68.         Log.i(TAG, "BaiduMapMyLocationActivity onCreate()");  
  69.  
  70.         mMapController.setZoom(15);  
  71.         mMapController.enableClick(true);  
  72.  
  73.         tvLocationResult = (TextView) this.findViewById(R.id.tv_location_result);  
  74.  
  75.         mLocationClient = new LocationClient(this.getApplicationContext());  
  76.         mLocationListener = new MyLocationListener();  
  77.         mLocationClient.registerLocationListener(mLocationListener);  
  78.  
  79.         LocationClientOption locationOption = new LocationClientOption();  
  80.         locationOption.setOpenGps(true);  
  81.         locationOption.setCoorType("bd09ll");  
  82.         locationOption.setPriority(LocationClientOption.GpsFirst);  
  83.         locationOption.setAddrType("all");  
  84.         locationOption.setProdName("通過GPS定位");  
  85.         mLocationClient.setLocOption(locationOption);  
  86.  
  87.         Log.i(TAG, "BaiduMapMyLocationActivity 開啟定位");  
  88.         mLocationClient.start();  
  89.  
  90.         // 重新定位  
  91.         findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {  
  92.  
  93.             @Override 
  94.             public void onClick(View v) {  
  95.  
  96.                 if (mLocationClient != null && mLocationClient.isStarted())  
  97.                     mLocationClient.requestLocation();  
  98.             }  
  99.         });  
  100.  
  101.         mLocationOverlay = new LocationOverlay(mMapView);  
  102.         // 百度官方API文檔解釋:打開指南針,但是我試驗覺得默認指南針就是打開的  
  103.         // mLocationOverlay.enableCompass();  
  104.         locData = new LocationData();  
  105.  
  106.         tvLocationResult.setOnClickListener(new View.OnClickListener() {  
  107.  
  108.             @Override 
  109.             public void onClick(View v) {  
  110.                 tvLocationResult.setVisibility(View.GONE);  
  111.             }  
  112.         });  
  113.  
  114.     }  
  115.  
  116.     class LocationOverlay extends MyLocationOverlay {  
  117.  
  118.         public LocationOverlay(MapView mapView) {  
  119.             super(mapView);  
  120.         }  
  121.  
  122.         // 處理在“我的位置”坐標上的點擊事件。  
  123.         @Override 
  124.         protected boolean dispatchTap() {  
  125.             Log.i(TAG, "BaiduMapMyLocationActivity 處理在“我的位置”坐標上的點擊事件 dispatchTap()");  
  126.  
  127.             if (mBDLocation != null) {  
  128.                 showLocation(mBDLocation);  
  129.             }  
  130.  
  131.             return super.dispatchTap();  
  132.         }  
  133.  
  134.     }  
  135.  
  136.     /**  
  137.      * 顯示我當前位置的詳細信息  
  138.      * @param location  
  139.      */ 
  140.     private void showLocation(BDLocation location) {  
  141.         StringBuffer sb = new StringBuffer(256);  
  142.         sb.append(" time : ");  
  143.         sb.append(location.getTime());  
  144.         sb.append("\n error code : ");  
  145.         sb.append(location.getLocType());  
  146.         sb.append("\n latitude : ");  
  147.         sb.append(location.getLatitude());  
  148.         sb.append("\n lontitude : ");  
  149.         sb.append(location.getLongitude());  
  150.  
  151.         // 判斷是否有定位精度半徑  
  152.         if (location.hasRadius()) {  
  153.             // 獲取定位精度半徑,單位是米  
  154.             float accuracy = location.getRadius();  
  155.             Log.i(TAG, "accuracy = " + accuracy);  
  156.  
  157.             sb.append("\n radius : ");  
  158.             sb.append(location.getRadius());  
  159.         }  
  160.  
  161.         if (location.getLocType() == BDLocation.TypeGpsLocation) {  
  162.             if (location.hasSpeed()) {  
  163.                 sb.append("\n speed : ");  
  164.                 sb.append(location.getSpeed());  
  165.             }  
  166.  
  167.             if (location.hasSateNumber()) {  
  168.                 sb.append("\n satellite : ");  
  169.                 sb.append(location.getSatelliteNumber());  
  170.             }  
  171.         } else if (location.getLocType() == BDLocation.TypeNetWorkLocation) {  
  172.             // 獲取反地理編碼。 只有使用網絡定位的情況下,才能獲取當前位置的反地理編碼描述。  
  173.             if (location.hasAddr()) {  
  174.                 String address = location.getAddrStr();  
  175.                 Log.i(TAG, "address = " + address);  
  176.  
  177.                 sb.append("\n addr : ");  
  178.                 sb.append(address);  
  179.             }  
  180.         }  
  181.  
  182.         tvLocationResult.setVisibility(View.VISIBLE);  
  183.         tvLocationResult.setText(sb);  
  184.     }  
  185.  
  186.     /**  
  187.      * 在地圖上標注定位得到我當前的位置  
  188.      * @param location  
  189.      */ 
  190.     private void markLocation(BDLocation location) {  
  191.         locData.latitude = location.getLatitude();  
  192.         locData.longitude = location.getLongitude();  
  193.         locData.direction = location.getDerect();  
  194.  
  195.         // 判斷是否有定位精度半徑  
  196.         if (location.hasRadius()) {  
  197.             // 獲取定位精度半徑,單位是米  
  198.             locData.accuracy = location.getRadius();  
  199.         }  
  200.  
  201.         mLocationOverlay.setData(locData);  
  202.         mMapView.getOverlays().add(mLocationOverlay);  
  203.         mMapView.refresh();  
  204.  
  205.         // 將我的當前位置移動到地圖的中心點  
  206.         mMapController.animateTo(new GeoPoint(  
  207.                         (int) (locData.latitude * 1e6),   
  208.                         (int) (locData.longitude * 1e6)));  
  209.  
  210.     }  
  211.  
  212.     class MyLocationListener implements BDLocationListener {  
  213.         @Override 
  214.         public void onReceiveLocation(BDLocation location) {  
  215.             if (location == null) {  
  216.                 return;  
  217.             }  
  218.  
  219.             Log.i(TAG, "BaiduMapMyLocationActivity onReceiveLocation()");  
  220.  
  221.             // TODO 為方便測試查看  
  222.             testLog(location);  
  223.  
  224.             // 在地圖上標注定位得到我當前的位置  
  225.             markLocation(location);  
  226.  
  227.             mBDLocation = location;  
  228.         }  
  229.  
  230.         @Override 
  231.         public void onReceivePoi(BDLocation arg0) {  
  232.               
  233.         }  
  234.     }  
  235.  
  236.     /**  
  237.      * 打印測試LOG信息  
  238.      * @param location  
  239.      */ 
  240.     private void testLog(BDLocation location) {  
  241.         String province = location.getProvince(); // 獲取省份信息  
  242.         String city = location.getCity(); // 獲取城市信息  
  243.         String district = location.getDistrict(); // 獲取區縣信息  
  244.  
  245.         Log.i(TAG, "province = " + province);  
  246.         Log.i(TAG, "city = " + city);  
  247.         Log.i(TAG, "district = " + district);  
  248.  
  249.         int type = location.getLocType();  
  250.         Log.i(TAG, "當前定位采用的類型是:type = " + type);  
  251.  
  252.         String coorType = location.getCoorType();  
  253.         Log.i(TAG, "坐標系類型:coorType = " + coorType);  
  254.  
  255.         float derect = location.getDerect();  
  256.         Log.i(TAG, "derect = " + derect);  
  257.     }  
  258.  
  259.     @Override 
  260.     public int getLayoutId() {  
  261.         return R.layout.main;  
  262.     }  
  263.  
  264.     @Override 
  265.     public int getMapViewId() {  
  266.         return R.id.bmapView;  
  267.     }  
  268.  
  269.     @Override 
  270.     protected void onDestroy() {  
  271.         Log.i(TAG, "BaiduMapMyLocationActivity onDestroy() start");  
  272.  
  273.         mLocationClient.stop();  
  274.         mLocationClient.unRegisterLocationListener(mLocationListener);  
  275.         this.mApplication.onTerminate();  
  276.           
  277.         super.onDestroy();  
  278.  
  279.         Log.i(TAG, "BaiduMapMyLocationActivity onDestroy() end");  
  280.     }  
  281.  
  282. }  



轉自:http://blog.csdn.net/android_ls/article/details/8586229

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved