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

溫馨提示×

溫馨提示×

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

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

百度地圖開放API初體驗(三)

發布時間:2020-07-07 16:41:48 來源:網絡 閱讀:703 作者:_隨心 欄目:開發技術

    前面已經實現了利用百度地圖進行定位的功能,定位只是一個基本的依托,現在我們可以利用它來做更多的東西,例如位置提醒服務。在定位API的模塊中,BDMap 還提供了一個地理圍欄服務的板塊,但是正如它里面介紹所說,目前只是一個Beta版本,博主登錄過百度LBS的開放平臺論壇,看到上面所提及到的Bug仍然存在很多,所以這里不作這方面的介紹。在API當中,里面有一個位置提醒使用的介紹,本篇主要介紹這個功能。值得注意的是,這里為了顯現定位提醒功能實現成功,在提醒服務里面增加了一個手機震動的功能。

    

一、實現位置提醒功能:


public class MainActivity<NotifyLister> extends Activity {


   ...


   public NotifyLister mNotifyer = null;//增加一個位置提醒的變量


   ...


   protected void onCreate(Bundle savedInstanceState) {


      ...


      initNotify();//使用一個定位提醒的函數,可以清晰分辨,下面會進行定義


      ...

  

    }


   //位置提醒相關代碼

   private void initNotify() {

      mNotifyer = new NotifyLister();//定義位置提醒變量


      mNotifyer.SetNotifyLocation(latitude,longtitude,distance,"bd09ll");

      //4個參數代表要位置提醒的點的坐標,具體含義依次為:緯度,經度,距離范圍,坐標系類型           (gcj02,gps,bd09,bd09ll)


      mLocationClient.registerNotify(mNotifyer);

      //注冊位置提醒監聽事件后,可以通過SetNotifyLocation倆修改位置提醒設置,修改后立刻生效


}

 

   //BDNotifyListener:位置提醒接口類,用于設定位置提醒

   public class NotifyLister extends BDNotifyListener{

      /**

      * onNotify(...): 位置提醒監聽事件具體實現

      * mlocation表示當前位置,

      * distance是當前坐標中心點與設定位置提醒的坐標點之間的距離值。

      */

      public void onNotify(BDLocation mlocation, float distance){

  

         //監聽范圍內所做的提醒功能


}

}


   ...


}


    這樣,基本的位置提醒服務已經完成,接下來要實現的是,在監聽范圍內所要做的動作(這里實現的是手機震動功能)。


二、實現提醒范圍內的手機震動功能:


  1. 首先,要在AndroidManifest.xml文件中添加允許手機震動的權限:


    <uses-permission android:name="android.permission.VIBRATE" />


  2. 接下來就可以直接在主java文件中編輯添加震動代碼:





public class MainActivity<NotifyLister> extends Activity {


   ...


   private Vibrator mVibrator;//添加控制手機震動的變量

   private long[] mTips = {1000,2000,1000,2000};//添加一個long型的數組,用來記錄震動頻率


   ...


  protected void onCreate(Bundle savedInstanceState) {


      ...


      

      mVibrator = (Vibrator) this.getSystemService(VIBRATOR_SERVICE);

      //給震動變量定義成一個手機可以提供的震動服務


      ...


     }


   public class NotifyLister extends BDNotifyListener{


      public void onNotify(BDLocation mlocation, float distance){

  

         mVibrator.vibrate(mTips, -1);

         //在提醒范圍內增加手機震動功能,第一個參數定義震動頻率,第二個參數定義震動的次數


}

}


    以上已經基本實現了BDMap所提供的位置提醒服務功能,但是有一點值得注意的是,在 


       mNotifyer.SetNotifyLocation(latitude,longtitude,distance,"bd09ll");


代碼里面的參數,distance距離是以m作單位,但是前面兩個是以百度坐標的經緯度作參數,在計算的時候不能簡單的作加減,要在經緯度和距離作轉換才可以直觀地計算。幸好,在BDMap所提供的API中,也有一個可以實現經緯度和距離作轉換的實現方式:


      LatLng p1 = new LatLng(x1, y1);//p1存放第一個點的經緯度,這里的x1,y1是經緯度,下同

      LatLng p2 = new LatLng(x2, y2);//p2存放第二個點的經緯度

      double distance = DistanceUtil.getDistance(p1, p2);//求兩點間的距離,單位是m


    這里在應用DistanceUtil.getDistance()的時候要注意,自己是否已經下載了定位的計算工具SDK。


向AI問一下細節

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

AI

玉田县| 平原县| 原阳县| 商丘市| 聂荣县| 天柱县| 如东县| 贵州省| 全椒县| 乐至县| 梁山县| 台中市| 沂南县| 曲水县| 文登市| 河池市| 华阴市| 长岭县| 潜江市| 济源市| 莱芜市| 上蔡县| 伊川县| 大冶市| 余姚市| 上栗县| 海城市| 元朗区| 泸州市| 蕲春县| 闻喜县| 财经| 冷水江市| 武平县| 唐山市| 垫江县| 屏南县| 县级市| 同江市| 夹江县| 城步|