百度地图 初解

来源:互联网 发布:上半年经济数据 编辑:程序博客网 时间:2024/05/18 03:12
 仅是资料的总结以及笔记(自用)
 步骤一、百度云地图的控件生成及模式转换
//自定义控件的调用

<com.baidu.mapapi.MapView

         Id

         Width

         Height

     Android:cickable=  “true” />

 

1初始化方法 DKInitializer.initalialize(getApplicationContext());

 必须在setContentView方法前之前

onCreate () {

requestWindowFeature(WINDOW>NOTITLEBAR);//去除顶栏

super.onCreate();

SDKInitializer.initalialize(getApplicationContext());

setOnContentView ();

}

 2、绑定声明周期

         mapView= findviewbyId id

        

onResume(){

super() ;

mMapView.Resume();

}

onPause(){

super() ;

mMapView.Pause();

}

onDestrory(){

super() ;

mMapView.Destrory();

}

 

 

// 设置地图放大比例

MapStatusUpdateFactory msu =MapStatusUpdateFactory.zoomTo(15.0f) ; //设置比例

mBaiduMap.setMapStatus(msu) ; //设置比例

 

Private BaiduMap mBaiduMap;

mBaiduMap = mMapView.getMap() ;

 

 

 

 

 

 

 

//通过菜单改变地图样式

 

onOptianItemSekected( MenuItemitem)

{

     Switch(item.getItemId())

                       Case R.id.id_map_commom :

                       mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);//普通地图

                       Break;

Case R.id.id_map_site ://卫星地图

mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);/卫星地图

                       Break;

 

Case R.id.id_map_commom: //实时交通

                       If(mBaiduMap.isTrafficEnabled())

{

                                          mBaiduMap.TrafficEnabled(false);

}

                            Else

                                 mBaiduMap.TrafficEnabled(true);

 

                            Break ;

 

}

 

/*****************************************/

//定位功能

LocationClient  //进行设置如同精度

BDLocationListener //定位需要时间 异步进行回调

 

Private LocationClient mLocationClient   ; //变量BDLocationListener

Private  MyLocationListener  mLocationListener ; //变量实现了接口

 

Private class MyLocationListener implementsBDLocationListener{

         Publicvoid onReceiveLocation (BDLocation arg0){ //定位成功后的回调

                           MyLocationData data =newMyLocationData.Builder()//

                  .direction(mCurrentX)//设置方向

                  .accuracy(location.getRadius())//

                  .latitude(location.getLatitude())//

                  .longitude(location.getLongitude())//

                  .build();//转换定位数据

          

//初始化图标

//Private BitmapDescriptormIconLocation ;

//mIconLocation = BitmapDescriptorFactory.fromResource(R.id….);

           //更新图标

 

           //更改模式

           //mLocationMode =LocationMode.NORMAL(FOLLOWING, COMPASS)

MyLocationConfiguration config = new

MyLocationConfiguration(mLocationMode,true, mIconLocation);

           mBaiduMap.setMylocationConfigerration(config);

           //更新图标

 

          if (isFirstIn)

           {

 

              //定位地图位置于中心点 更新经纬度

              LatLng latLng =new LatLng(location.getLatitude(),

                     location.getLongitude());

              MapStatusUpdate msu =MapStatusUpdateFactory.newLatLng(latLng);

             mBaiduMap.animateMapStatus(msu);

             

          

             isFirstIn =false;

              Toast.makeText(context, location.getAddrStr(),

                     Toast.LENGTH_SHORT).show();

         }

 

}

}


//initLocation ()

         mLocationClient=  new LocationClient (this) ;

         mLocationListener= new MyLocationListener() ;

         mLocationClient.registerLocationListener(mLocationListener); //注册关联二者

   

//mLocationClient进行必要的设置

 

option.setCoorType(“BD09ll”); //坐标类型

option.setNeedAddress(true); //返回数据

option.setOpenGps(true);//打开GPS

option.setScanSpan(1000) ; //每隔1秒请求

mLocationClient.setLocOption (option) ;

 

 

//开启定位 关闭定位

onStart(){

mBaiduMap.setLocationEnable(true);//d地图开启定位允许

if (mLocationClient.isStart())

mLocationClient.start() ;// 开启定位

}

OnStop(){

     mBaiduMap.setLocationEnable(false);//d地图开启定位允许

if (mLocationClient.isStart())

mLocationClient.stop() ;// 开启定位

}

 

/**********/

自定义图标

BitmapDescriptor

 

//初始化图标

Private BitmapDescriptor mIconLocation ;

mIconLocation = BitmapDescriptorFactory.fromResource(R.id….);

 

 

 

 

 

//方向传感器

 

MyOrientationListener implementSensorEventListener(){

//实现接口

Private SensorManager m SensorManager ; //传感器管理者

Private Context mContext ;

Private Sensor mSensor ;

Float float lastx ;

Srart(){

         //获得传感器

         mSensorManager= (SensorManager)mContext.

getSystemService(Context.SENSOR_SERVICE);

if(mSensorManager= null )

         mSensor= mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATIAN);

         if(mSensor!=null)

         {

mSensorManager.registerListrner(this, mSensor ,SensorManager.SENSOR_DELAY_UI) ;

// SensorManager.SENSOR_DELAY_UI精度可改

 

}

 

}

 

Stop(){

mSensorManager.unregisterListrner(this, mSensor ,SensorManager.SENSOR_DELAY_UI) ;

 

}

 

OnAccuracyChanged( sensor agr0 , int arg1 )

{

                  

}

 

 

 

 

 

OnSensorChanged( SensorEvent event )

{

  If(event.sensor.getType() ==Sensor.TYPE_ORIENTATION)

                   {

                            Float x  =

                            Event.value[SensorManager.DATA_X];//当方向传感器变化时 

//携带三个坐标 xyz

If(Math.abs(x-lastX)>1.0)

{

         mOnOrientationListener.onOrientationChanged(x) ;

}

}

}

 

  Publicvoid OnOrientationListener mOnOrientationListener ;

         Set  方法

         Publicinterface OnOrientationListener {

         Void onOrientationChanged(float x) ;

}

 

}

//覆盖物的使用

 //覆盖物   

Marker

OverlayOptions  //指定位置及图标

//1 bean  Info

double latitude ;

double longitude ;

int imgId ;

String name ;

Strinf distance ;

Int zan ;

 

// 定义图标

BitmapDescrotor  mMakrer =  BitmapDescriptorFactory.fromResource(R.id…);

 

//添加覆盖物

mBaiduMap.clear() ;

LatLng latLng = null ;// 经纬度

Marker marker = nunll ; //

OverlayOptions  options ;

latLng = new latLng ( , ) ;

options = newMarkerOptions().position(latLng).icon(marker).zIndex(5) ;

marker =(Marker)mBaiduMap.addOverlay(options);

Bundle bundle = new Bundle () ;

Budle.putSerializable(“info”,info);

marke=setExtraInfo(bundle);

 

//将地图定位到有覆盖物的地方

MapStatusUpdate msu =MapstatusUpdateFactory.newLatlng(Latlng);

mBaiduMap.setMapStatus(msu);

 

 

//设置marker点击事件

mBaiduMap.setOnMarkerClickListener(newOnMarkerClickListener{

         publicBoolean onMarkerClick(Marker marker)

                   {

                            Bundlebundleinfo = Marker.getExtraInfo() ;

                            Infoinfo = Bundleinfo.getSerializable(“info”);

                            ImageView iv =mMarkerLy.findViewById(R.id….);

Return true ;

}

});

//设置map点击事件消失布局

mBaiduMap.setOnMapClickListener(newOnMapClickListener(){

         publicBoolean onMapPoiClick(MapPoi arg0){

        

 

         mMarkerLayout.setVisbility(View.gone);

}

});

 

//显示点击显示文字信息  InfoWIndows

 

InfoWindow infwindow ;

TextView tv =  new TextView (context);

Tv.setBackGround()

         setPadding

         setText

 

final LatLng latLng = marker.getPosition();

Point p = MBaiduMap.getProjection().toScreenLocation(latLng);//将经纬度转换成屏幕上的点

p.y -= 47 ;

LatLng ll = mBaiduMap.getProjection().fromScreenLocation(p);//将屏幕上的点转化为经纬度

 

Infowindow = new infowindow(tv,ll,newOnInfoWindowClickListener(){

         mBaiduMap.hideInfoWindow();

})

mBaiduMap.showInfoWindow(infoWindow);


//三 鹰眼轨迹的使用

Private static final String TAG =“MyService”;

//轨迹服务

Protect static Trace trace = null ;

//鹰眼服务ID

Public static final long  serviceId = xxxxxxx ;

//轨迹服务类型

Private int traceType = 2

//轨迹服务客户端

Public static LBSTraceClient client = null;

//Entity监听器

Public static OnEntityListenerentityListener = null

//开启轨道服务监听器

Protected OnStartTraceListenerstarttraceListener = null ;

//停止轨道服务监听器

Protected static OnStopTraceListener = null;

//采集周期

Private int gatherUnterval = 10 ;

//设置打包周期

Private int packInterval = 20 ;

 

Protect static Boolean isTraceStart = false;

 

//使用手机IMEI号为唯一值做轨迹的标志号

Private string imei ;

 

Public IBinder onBind (Inent arg0)

{return null ;}

 

Public int onStartCommand(Intent intent ,int flags , int startId)

{

         If(intent!= null && intent.getExtra()!= null ){

         Imei= intent.getStringExtra(“imei”);

}

Init() ;

Return super.onStratCommand(intent ,START_STICKY,startId);

}

//被销毁时反注册广播接收器

Public void onDestroy(){

         Super.onDestroy();

         stopTrace();

}

 

 

 

//初始化

Private void init(){

 //初始化轨迹服务客户端

Client = new LBSTraceClient(this);

//设置定位模式

Client.setLoctionMode(LocationMode.High_Accuracy);

//初始化轨迹服务

Trace = new Trace(this,serviceId,imei,traceType);

//采集周期上传周期

client.setInterval(gatherInterval,packInterval);

//设置http请求协议类型0  http 1 https (https保密高)

Client.setProtocolType(0);

//初始化监听器

initListener();

//启动轨迹上传

startTrace() ;

}

//开启轨迹服务

Private void startTrace (){

         //通过轨迹服务客户端client开启轨迹服务

         Client.startTrace(trace,startTraceListener);

}

//停止轨迹服务

Public static void stopTrace(){

If(isTraceStart)

  Client.stopTrace(trace,stopTraceListener);

}

// 初始化监听器

 private void initListener() {

       initOnEntityListener();

        // 初始化开启轨迹服务监听器

        initOnStartTraceListener();

        // 初始化停止轨迹服务监听器

        initOnStopTraceListener();

}

 

 

    /**

     * 初始化OnStartTraceListener

     */

    private voidinitOnStartTraceListener() {

        // 初始化startTraceListener

        startTraceListener = newOnStartTraceListener() {

        // 开启轨迹服务回调接口(arg0 :消息编码,arg1 :消息内容,详情查看类参考)

        public voidonTraceCallback(int arg0, String arg1) {

LogUtil.i(TAG, "开启轨迹回调接口 [消息编码 : " + arg0 + ",消息内容 : " + arg1 +"]");

            if (0 == arg0 || 10006== arg0) {

isTraceStart = true;

            }

}

            //轨迹服务推送接口(用于接收服务端推送消息,arg0 :消息类型,arg1 :消息内容,详情查看类参考)

            public voidonTracePushCallback(byte arg0, String arg1) {

                LogUtil.i(TAG,"轨迹服务推送接口消息 [消息类型 : " + arg0 + ",消息内容 : " + arg1 +"]");

            }

        };

    }

    // 初始化OnStopTraceListener

    private void initOnStopTraceListener(){

        stopTraceListener = newOnStopTraceListener() {

 

            //轨迹服务停止成功

            public voidonStopTraceSuccess() {

                LogUtil.i(TAG,"停止轨迹服务成功");

                isTraceStart =false;

                stopSelf();

            }

 

            //轨迹服务停止失败(arg0 :错误编码,arg1 :消息内容,详情查看类参考)

            public voidonStopTraceFailed(int arg0, String arg1) {

                LogUtil.i(TAG,"停止轨迹服务接口消息 [错误编码 : " + arg0 + ",消息内容 : " + arg1 +"]");

            }

        };

    }

 

    // 初始化OnEntityListener

    private voidinitOnEntityListener() {

 

        entityListener = newOnEntityListener() {

 

            //请求失败回调接口

            @Override

            public voidonRequestFailedCallback(String arg0) {method stub

                Looper.prepare();

                LogUtil.i(TAG,"entity请求失败回调接口消息 : " +arg0);

               Toast.makeText(getApplicationContext(), "entity请求失败回调接口消息 : " + arg0, Toast.LENGTH_SHORT).show();

                Looper.loop();

            }

 

            //添加entity回调接口

            @Override

            public voidonAddEntityCallback(String arg0) {

                Looper.prepare();

                LogUtil.i(TAG,"添加entity回调接口消息 : " + arg0);

               Toast.makeText(getApplicationContext(), "添加entity回调接口消息 : " + arg0,Toast.LENGTH_SHORT).show();

                Looper.loop();

            }

 

            //查询entity列表回调接口

            @Override

            public voidonQueryEntityListCallback(String message) {

                LogUtil.i(TAG,"onQueryEntityListCallback : " + message);

            }

 

            @Override

            public voidonReceiveLocation(TraceLocation location) {

 

            }

        };

}

}

 

 

 

 

 

 

 

 

 



0 0
原创粉丝点击