Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android 實現百度地圖app

android 實現百度地圖app

編輯:關於Android編程

以百度api為基礎

復制

要定義的變量

private BaiduMap mBaiduMap;
    private MapView mMapView;
    private LocationClient mLocationClient;
    private boolean isFirstIn = true;

初始化

mMapView= (MapView) findViewById(R.id.bmapView);
        mBaiduMap = mMapView.getMap();

各部分實現的功能
1.

//在使用SDK各組件之前初始化context信息,傳入ApplicationContext  
        //注意該方法要再setContentView方法之前實現  
        SDKInitializer.initialize(getApplicationContext());  

把地圖的生命周期和activity的生命周期綁定起來

@Override
    protected void onStart() {
        super.onStart();
        mBaiduMap.setMyLocationEnabled(true);
        if(!mLocationClient.isStarted())
        mLocationClient.start();
    }
    @Override
    protected void onStop() {
        // TODO Auto-generated method stub
        super.onStop();
    }
    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
        mMapView.onDestroy();
    }
    @Override  
    protected void onResume() {  
        super.onResume();  
        //在activity執行onResume時執行mMapView. onResume (),實現地圖生命周期管理  
        mMapView.onResume();  
        }  
    @Override  
    protected void onPause() {  
        super.onPause();  
        //在activity執行onPause時執行mMapView. onPause (),實現地圖生命周期管理  
        mMapView.onPause();  
        }  

實現option點擊轉換地圖模式

@Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // TODO Auto-generated method stub
            menu.add(0, 1, 0, 普通地圖);
            menu.add(0, 2, 0, 衛星地圖);
            menu.add(0, 3, 0, 實時交通(off));
            return super.onCreateOptionsMenu(menu);         
        }

設置option的點擊事件

@Override
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
            case 1:
                //普通地圖  
                mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);  
                break;
            case 2:
                 //衛星地圖  
                mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
                break;
            case 3:             
                if(mBaiduMap.isTrafficEnabled()){
                    mBaiduMap.setTrafficEnabled(false);
                    item.setTitle(實時交通(off));
                }else{
                    mBaiduMap.setTrafficEnabled(true);
                    item.setTitle(實時交通(on));
                }
                break;
            }           
            return super.onOptionsItemSelected(item);       
        }

在地圖上添加標識物


//定義Maker坐標點  
        LatLng point = new LatLng(39.963175, 116.400244);  
        //構建Marker圖標  
        BitmapDescriptor bitmap = BitmapDescriptorFactory  
            .fromResource(R.drawable.ic_launcher);  
        //構建MarkerOption,用於在地圖上添加Marker  
        OverlayOptions option = new MarkerOptions()  
            .position(point)  
            .icon(bitmap);  
        //在地圖上添加Marker,並顯示  
        mBaiduMap.addOverlay(option);         

設置gps定位
要用到的類
LocationClient
BDLocationListener

(1)

MyLocationListener myLocationListener = new MyLocationListener();       
mLocationClient = new LocationClient(getApplicationContext());     //聲明LocationClient類
        mLocationClient.registerLocationListener(myLocationListener);    //注冊監聽函數  

(2)利用LocationClientOption 設置定位的屬性

LocationClientOption option = new LocationClientOption();
        option.setLocationMode(LocationMode.Hight_Accuracy);//設置定位模式
        option.setCoorType(bd09ll);//返回的定位結果是百度經緯度,默認值gcj02
        option.setScanSpan(1000);//設置發起定位請求的間隔時間為5000ms
        option.setIsNeedAddress(true);//返回的定位結果包含地址信息
        option.setNeedDeviceDirect(true);//返回的定位結果包含手機機頭的方向
        mLocationClient.setLocOption(option);

(3)監聽器的實現

    private class MyLocationListener implements BDLocationListener{

            @Override
            public void onReceiveLocation(BDLocation location) {
                // TODO Auto-generated method stub
                MyLocationData data = new MyLocationData.Builder()
                //設置經緯度
                .accuracy(location.getRadius())
                .latitude(location.getLatitude())
                .longitude(location.getLongitude())
                .build();
                mBaiduMap.setMyLocationData(data);
            //判斷第一次進入,定位到目前所在位置
            if(isFirstIn){
                LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
                MapStatusUpdate msu =MapStatusUpdateFactory.newLatLng(latLng);
                mBaiduMap.animateMapStatus(msu);
                Toast.makeText(getApplicationContext(), location.getAddrStr(),3000).show();
                isFirstIn = false;
            }           
            }  
        }

所要加的權限

    
 
    
    

所要在application聲明的

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