中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

android使用百度地圖SDK獲取定位信息示例

發布時間:2020-09-18 23:25:49 來源:腳本之家 閱讀:197 作者:石煒賢的工作室 欄目:移動開發

本文使用Android Studio開發。

獲取定位信息相對簡單,我們只需要如下幾步:

第一步,注冊百度賬號,在百度地圖開放平臺新建應用、生成API_KEY。這些就不細說了,請前往這里:http://lbsyun.baidu.com/index.php?title=android-locsdk/guide/key

第二步,下載sdk,地址:http://lbsyun.baidu.com/index.php?title=android-locsdk/geosdk-android-download

第三步,建立Android Studio工程(略過不說),配置環境:

將解壓后的文件放入libs文件夾下,并在src/main下建立一個叫做jniLibs的文件夾,并把解壓后內的文件夾靠進去,如下圖:

android使用百度地圖SDK獲取定位信息示例 android使用百度地圖SDK獲取定位信息示例

第四步,將BaiduLBS_Android.jar加入環境變量(右鍵,Add As Library),并在app的build.gradle中的android中添加:

 sourceSets {
    main {
      jniLibs.srcDirs = ['libs']
    }
  }

如圖:

android使用百度地圖SDK獲取定位信息示例

第五步,在AndroidManifest.xml文件中聲明權限:

<uses-permission android:name="android.permission.INTERNET"/>
  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  <!--網絡定位-->
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  <!--GPS定位-->
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

并在application標簽中添加如下內容:

 <meta-data
      android:name="com.baidu.lbsapi.API_KEY"
      android:value="你申請的API key" />
    <service
      android:name="com.baidu.location.f"
      android:enabled="true"
      android:process=":remote" />

第六步,測試代碼,獲取定位信息:

public class MainActivity extends AppCompatActivity {

  public LocationClient mLocationClient = null;
  public BDLocationListener myListener = new MyLocationListener();

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    startLocate();
  }

  /**
   * 定位
   */
  private void startLocate() {
    mLocationClient = new LocationClient(getApplicationContext());   //聲明LocationClient類
    mLocationClient.registerLocationListener(myListener);  //注冊監聽函數
    LocationClientOption option = new LocationClientOption();
    option.setLocationMode(LocationClientOption.LocationMode.Battery_Saving
    );//可選,默認高精度,設置定位模式,高精度,低功耗,僅設備
    option.setCoorType("bd09ll");//可選,默認gcj02,設置返回的定位結果坐標系
    int span = 1000;
    option.setScanSpan(span);//可選,默認0,即僅定位一次,設置發起定位請求的間隔需要大于等于1000ms才是有效的
    option.setIsNeedAddress(true);//可選,設置是否需要地址信息,默認不需要
    option.setOpenGps(true);//可選,默認false,設置是否使用gps
    option.setLocationNotify(true);//可選,默認false,設置是否當GPS有效時按照1S/1次頻率輸出GPS結果
    option.setIsNeedLocationDescribe(true);//可選,默認false,設置是否需要位置語義化結果,可以在BDLocation.getLocationDescribe里得到,結果類似于“在北京天安門附近”
    option.setIsNeedLocationPoiList(true);//可選,默認false,設置是否需要POI結果,可以在BDLocation.getPoiList里得到
    option.setIgnoreKillProcess(false);//可選,默認true,定位SDK內部是一個SERVICE,并放到了獨立進程,設置是否在stop的時候殺死這個進程,默認不殺死
    option.SetIgnoreCacheException(false);//可選,默認false,設置是否收集CRASH信息,默認收集
    option.setEnableSimulateGps(false);//可選,默認false,設置是否需要過濾GPS仿真結果,默認需要
    mLocationClient.setLocOption(option);
    //開啟定位
    mLocationClient.start();
  }

  private class MyLocationListener implements BDLocationListener {

    @Override
    public void onReceiveLocation(BDLocation location) {
      StringBuffer sb = new StringBuffer(256);
      sb.append("time : ");
      sb.append(location.getTime());
      sb.append("\nerror code : ");
      sb.append(location.getLocType());
      sb.append("\nlatitude : ");
      sb.append(location.getLatitude());
      sb.append("\nlontitude : ");
      sb.append(location.getLongitude());
      sb.append("\nradius : ");
      sb.append(location.getRadius());
      if (location.getLocType() == BDLocation.TypeGpsLocation) {// GPS定位結果
        sb.append("\nspeed : ");
        sb.append(location.getSpeed());// 單位:公里每小時
        sb.append("\nsatellite : ");
        sb.append(location.getSatelliteNumber());
        sb.append("\nheight : ");
        sb.append(location.getAltitude());// 單位:米
        sb.append("\ndirection : ");
        sb.append(location.getDirection());// 單位度
        sb.append("\naddr : ");
        sb.append(location.getAddrStr());
        sb.append("\ndescribe : ");
        sb.append("gps定位成功");

      } else if (location.getLocType() == BDLocation.TypeNetWorkLocation) {// 網絡定位結果
        sb.append("\naddr : ");
        sb.append(location.getAddrStr());
        //運營商信息
        sb.append("\noperationers : ");
        sb.append(location.getOperators());
        sb.append("\ndescribe : ");
        sb.append("網絡定位成功");
      } else if (location.getLocType() == BDLocation.TypeOffLineLocation) {// 離線定位結果
        sb.append("\ndescribe : ");
        sb.append("離線定位成功,離線定位結果也是有效的");
      } else if (location.getLocType() == BDLocation.TypeServerError) {
        sb.append("\ndescribe : ");
        sb.append("服務端網絡定位失敗,可以反饋IMEI號和大體定位時間到loc-bugs@baidu.com,會有人追查原因");
      } else if (location.getLocType() == BDLocation.TypeNetWorkException) {
        sb.append("\ndescribe : ");
        sb.append("網絡不同導致定位失敗,請檢查網絡是否通暢");
      } else if (location.getLocType() == BDLocation.TypeCriteriaException) {
        sb.append("\ndescribe : ");
        sb.append("無法獲取有效定位依據導致定位失敗,一般是由于手機的原因,處于飛行模式下一般會造成這種結果,可以試著重啟手機");
      }
      sb.append("\nlocationdescribe : ");
      sb.append(location.getLocationDescribe());// 位置語義化信息
      List<Poi> list = location.getPoiList();// POI數據
      if (list != null) {
        sb.append("\npoilist size = : ");
        sb.append(list.size());
        for (Poi p : list) {
          sb.append("\npoi= : ");
          sb.append(p.getId() + " " + p.getName() + " " + p.getRank());
        }
      }
      Log.e("描述:", sb.toString());
    }
  }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

于都县| 喜德县| 新密市| 长治县| 吴江市| 古田县| 外汇| 革吉县| 桐乡市| 新巴尔虎左旗| 时尚| 余干县| 轮台县| 乾安县| 绵阳市| 寻甸| 托克托县| 眉山市| 海口市| 理塘县| 西安市| 莎车县| 布拖县| 射洪县| 赤壁市| 崇义县| 阿坝| 筠连县| 东乡县| 额尔古纳市| 南京市| 论坛| 南澳县| 闻喜县| 平昌县| 青冈县| 哈密市| 顺昌县| 阜城县| 西华县| 黄龙县|