百度地圖定位 : 擷取當前位置的經緯度,當前位置經緯度

來源:互聯網
上載者:User

百度地圖定位 : 擷取當前位置的經緯度,當前位置經緯度

說明:

1.初始化 BaiduMap SDK要在顯示介面之前,即:

 SDKInitializer.initialize(Context);

  setContentView(R.layout.main);

2. 設定定位的模式是 LocationMode.Hight_Accuracy 時,在室內可能無法擷取到準確的經緯度,會得到預設的值是4.9E-324

    處理辦法是將模式改為Battery_Saving,或到室外

3.可以根據當前裝置網路連接情況和GPS是否開啟來設定定位元模式

   //獲得網路連接情況

          ConnectivityManager cManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

         NetworkInfo info = cManager.getActiveNetworkInfo();

   //擷取GPS的串連情況
        LocationManager lManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
     if(lManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
               Toast.makeText(this, "GPS已開啟", 0).show();
         }

 

4.使用經緯度要在public void onReceiveLocation(BDLocation loc) {}方法中操作

 

步驟一:匯入百度定位SDK包

 

第二部:在AndroidManifest.xml資訊清單檔中添加存取權限和服務等,代碼如下:

1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="com.qf.location" 4 android:versionCode="1" 5 android:versionName="1.0" > 6 7 <uses-sdk 8 android:minSdkVersion="8" 9 android:targetSdkVersion="18" />10 11 <!-- 添加的內容 1 (存取權限) -->12 <uses-permission android:name="android.permission.GET_ACCOUNTS" />13 <uses-permission android:name="android.permission.USE_CREDENTIALS" />14 <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />15 <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />16 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />17 <uses-permission android:name="android.permission.INTERNET" />18 <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />19 <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />20 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />21 <uses-permission android:name="android.permission.READ_PHONE_STATE" />22 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />23 <uses-permission android:name="android.permission.BROADCAST_STICKY" />24 <uses-permission android:name="android.permission.WRITE_SETTINGS" />25 <uses-permission android:name="android.permission.READ_PHONE_STATE" />26 <!-- 這個許可權用於進行網路定位 -->27 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" >28 </uses-permission>29 <!-- 這個許可權用於訪問GPS定位 -->30 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" >31 </uses-permission>32 <!-- 用於訪問wifi網路資訊,wifi資訊會用於進行網路定位 -->33 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" >34 </uses-permission>35 <!-- 擷取電訊廠商資訊,用於支援提供電訊廠商資訊相關的介面 -->36 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >37 </uses-permission>38 <!-- 這個許可權用於擷取wifi的擷取許可權,wifi資訊會用來進行網路定位 -->39 <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" >40 </uses-permission>41 <!-- 用於讀取手機當前的狀態 -->42 <uses-permission android:name="android.permission.READ_PHONE_STATE" >43 </uses-permission>44 <!-- 寫入擴充儲存,向擴充卡寫入資料,用於寫入離線定位元據 -->45 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >46 </uses-permission>47 <!-- 訪問網路,網路定位需要上網 -->48 <uses-permission android:name="android.permission.INTERNET" />49 <!-- SD卡讀取許可權,使用者寫入離線定位元據 -->50 <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" >51 </uses-permission>52 <!-- 允許應用讀取低層級的系統記錄檔 -->53 <uses-permission android:name="android.permission.READ_LOGS" >54 </uses-permission>55 56 <application57 android:allowBackup="true"58 android:icon="@drawable/ic_launcher"59 android:label="@string/app_name"60 android:theme="@style/AppTheme" >61 <activity62 android:name="com.qf.location.MainActivity"63 android:label="@string/app_name" >64 <intent-filter>65 <action android:name="android.intent.action.MAIN" />66 67 <category android:name="android.intent.category.LAUNCHER" />68 </intent-filter>69 </activity>70 71 <!-- 添加的內容 2 -->72 <meta-data73 android:name="com.baidu.lbsapi.API_KEY"74 android:value="Dt7Q30nVQMKbM3NT6GHnRnGq" />75 76 <service77 android:name="com.baidu.location.f"78 android:enabled="true"79 android:process=":remote" >80 </service>81 </application>82 83 </manifest>View Code

第三步: 申請 百度地圖開發密鑰:在上步中顯示的<meta_data >標籤的value屬性上設定

第四步:寫代碼擷取當前位置經緯度:代碼如下:

1 private LocationClient locClient; 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 7 //顯示介面之前初始化 BaiduMap SDK 8 SDKInitializer.initialize(getApplicationContext()); 9 setContentView(R.layout.activity_main);10 11 12 getLocation();13 }14 15 16 //擷取手機當前所在位置的經緯度17 public void getLocation(){18 //執行個體化位置用戶端19 locClient = new LocationClient(getApplicationContext());20 //建立一個位置option對象21 LocationClientOption locOption = new LocationClientOption();22 23 //設定option的屬性24 locOption.setCoorType("bd09II"); // bd09II表示返回的結果是百度的經緯度25 locOption.setIsNeedAddress(true); //返回的資訊包含當前的地址26 locOption.setNeedDeviceDirect(true); //返回的內容包含手機機頭的方向27 locOption.setScanSpan(5000); //每5秒發起一次定位請求28 locOption.setLocationMode(LocationMode.Hight_Accuracy); //高精度模式,網路和GPS29 30 31 //將封裝的參數設定到位置用戶端32 locClient.setLocOption(locOption);33 34 //給位置用戶端註冊位置監聽器35 locClient.registerLocationListener(new BDLocationListener() {36 37 @Override38 public void onReceiveLocation(BDLocation loc) {39 double latitude = loc.getLatitude();40 double longitude = loc.getLongitude();41 Toast.makeText(getApplicationContext(), latitude+":"+longitude, 0).show();42 43 /*================================此處定義介面=====================*/44 45 } 46 });47 48 //啟動位置用戶端49 locClient.start();50 51 }View Code

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.