Android 百度地圖 SDK v3.3.0 (二)--- 地圖定位和圖層展示

來源:互聯網
上載者:User

標籤:android

轉載請註明出處:http://blog.csdn.net/tanzuai/article/details/43763159在上一篇部落格中,我們成功把地圖匯入了我們的項目。本篇我們準備為地圖添加:第一,定位功能;第二,圖層展示,第三,結合方向感應器,通過旋轉手機進行道路的方向確認。有了這三個功能,地圖已經可以為我服務了!
                   
     為了方便,我把所有的按鈕都放到了menu菜單中。
      1.在AndroidManifest.xml配一個service
   <!-- 定位service -->        <service            android:name="com.baidu.location.f"            android:enabled="true"            android:process=":remote" >        </service>

       2、初次啟動定位
    /**     * 初始化定位     */    private void initMyLocation() {    // 地圖初始化mBaiduMap = mMapView.getMap();MapStatusUpdate msu = MapStatusUpdateFactory.zoomTo(15.0f);mBaiduMap.setMapStatus(msu);// 開啟定位元影像層//mBaiduMap.setMyLocationEnabled(true);// 定位初始化mLocClient = new LocationClient(this);mLocClient.registerLocationListener(myListener);LocationClientOption option = new LocationClientOption();option.setOpenGps(true);// 開啟gpsoption.setCoorType("bd09ll"); // 設定座標類型option.setScanSpan(1000);//設定發起定位請求的間隔時間為1000msoption.setIsNeedAddress(true);//返回的定位結果包含地址資訊option.setNeedDeviceDirect(true);//返回的定位結果包含手機機頭的方向mLocClient.setLocOption(option);//設定定位參數//mLocClient.start();}

      3.然後是定位的監聽器MyLocationListener:     
    /**      * 定位的監聽器      *       * @author TanZuAi      */    public class MyOrientationListener implements SensorEventListener {private Context context;private SensorManager sensorManager;private Sensor sensor;private float lastX;private OnOrientationListener onOrientationListener;public MyOrientationListener(Context context) {this.context = context;}// 開始public void start() {// 獲得感應器管理器sensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);if (sensorManager != null) {// 獲得方向感應器sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);}// 註冊if (sensor != null) {// SensorManager.SENSOR_DELAY_UIsensorManager.registerListener(this, sensor,SensorManager.SENSOR_DELAY_UI);}}// 停止檢測public void stop() {sensorManager.unregisterListener(this);}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {}@Overridepublic void onSensorChanged(SensorEvent event) {// 接受方向感應器的類型if (event.sensor.getType() == Sensor.TYPE_ORIENTATION) {// 這裡我們可以得到資料,然後根據需要來處理float x = event.values[SensorManager.DATA_X];if (Math.abs(x - lastX) > 1.0) {onOrientationListener.onOrientationChanged(x);}lastX = x;}}public void setOnOrientationListener(OnOrientationListener onOrientationListener) {this.onOrientationListener = onOrientationListener;}public interface OnOrientationListener {void onOrientationChanged(float x);}}
     4. 定位也是比較耗電的,所以我們在onStart中開啟定位,在onStop中關閉定位~~這樣應用最小化時就不會一直在哪GPS請求定位了,使用者       要是看你app一直在那定位,估計馬上就被卸載了~
@Override    protected void onStart() {    // 開啟圖層定位mBaiduMap.setMyLocationEnabled(true);if (!mLocClient.isStarted()){mLocClient.start();}// 開啟方向感應器myOrientationListener.start();super.onStart();    }        @Overrideprotected void onStop(){// 關閉圖層定位mBaiduMap.setMyLocationEnabled(false);mLocClient.stop();// 關閉方向感應器myOrientationListener.stop();super.onStop();}

  在onCreate中初始化方向感應器
      /** * 初始化方向感應器 */private void initOritationListener(){myOrientationListener = new MyOrientationListener(getApplicationContext());myOrientationListener.setOnOrientationListener(new OnOrientationListener(){@Overridepublic void onOrientationChanged(float x){mXDirection = (int) x;// 構造定位元據MyLocationData locData = new MyLocationData.Builder().accuracy(mCurrentAccracy)// 此處設定開發人員擷取到的方向資訊,順時針0-360.direction(mXDirection).latitude(mCurrentLantitude).longitude(mCurrentLongitude).build();// 設定定位元據mBaiduMap.setMyLocationData(locData);// 設定自訂表徵圖mCurrentMarker = BitmapDescriptorFactory.fromResource(R.drawable.navi_map_gps_locked);mBaiduMap.setMyLocationConfigeration(new MyLocationConfiguration(mCurrentMode, true, mCurrentMarker));    }});     }

    好了,介紹完畢了      代碼請大家到下面的地址下載:     源碼


Android 百度地圖 SDK v3.3.0 (二)--- 地圖定位和圖層展示

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.