<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) {
}
};
}
}