您的位置:首页 > 移动开发 > Android开发

android百度地图:卫星地图普通地图交通地图切换

2013-06-24 16:32 507 查看
在基础地图模式上,增加了普通图和卫星图的切换,以及是否增加交通图的图层。

public class LayersDemo extends Activity {

/**
*  MapView 是地图主控件
*/
private MapView mMapView = null;
/**
*  用MapController完成地图控制
*/
private MapController mMapController = null;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/**
* 使用地图sdk前需先初始化BMapManager.
* BMapManager是全局的,可为多个MapView共用,它需要地图模块创建前创建,
* 并在地图地图模块销毁后销毁,只要还有地图模块在使用,BMapManager就不应该销毁
*/
DemoApplication app = (DemoApplication)this.getApplication();
if (app.mBMapManager == null) {
app.mBMapManager = new BMapManager(this);
/**
* 如果BMapManager没有初始化则初始化BMapManager
*/
app.mBMapManager.init(DemoApplication.strKey,new DemoApplication.MyGeneralListener());
}
/**
* 由于MapView在setContentView()中初始化,所以它需要在BMapManager初始化之后
*/
setContentView(R.layout.activity_layers);
mMapView = (MapView)findViewById(R.id.bmapView);
/**
* 获取地图控制器
*/
mMapController = mMapView.getController();
/**
*  设置地图是否响应点击事件  .
*/
mMapController.enableClick(true);
/**
* 设置地图缩放级别
*/
mMapController.setZoom(12);
/**
* 显示内置缩放控件
*/
mMapView.setBuiltInZoomControls(true);

/**
* 将地图移动至天安门
* 使用百度经纬度坐标,可以通过http://api.map.baidu.com/lbsapi/getpoint/index.html查询地理坐标
* 如果需要在百度地图上显示使用其他坐标系统的位置,请发邮件至mapapi@baidu.com申请坐标转换接口
*/
double cLat = 39.945 ;
double cLon = 116.404 ;
GeoPoint p = new GeoPoint((int)(cLat * 1E6), (int)(cLon * 1E6));
mMapController.setCenter(p);
}

/**
* 设置底图显示模式
* @param view
*/
public void setMapMode(View view){
boolean checked = ((RadioButton) view).isChecked();
switch(view.getId()) {
case R.id.normal:
if (checked)
mMapView.setSatellite(false);
break;
case R.id.statellite:
if (checked)
mMapView.setSatellite(true);
break;
}
}
/**
* 设置是否显示交通图
* @param view
*/
public void setTraffic(View view){
mMapView.setTraffic(((CheckBox) view).isChecked());
}
@Override
protected void onPause() {
/**
*  MapView的生命周期与Activity同步,当activity挂起时需调用MapView.onPause()
*/
mMapView.onPause();
super.onPause();
}

@Override
protected void onResume() {
/**
*  MapView的生命周期与Activity同步,当activity恢复时需调用MapView.onResume()
*/
mMapView.onResume();
super.onResume();
}

@Override
protected void onDestroy() {
/**
*  MapView的生命周期与Activity同步,当activity销毁时需调用MapView.destroy()
*/
mMapView.destroy();
super.onDestroy();
}

@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
mMapView.onSaveInstanceState(outState);

}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
mMapView.onRestoreInstanceState(savedInstanceState);
}

}
对于做android开发不就的同学也许会发现,setMapMode和setTraffic方法没有被调用,其实看看layout文件,你会发现这两行代码:
android:onClick="setMapMode"
android:onClick="setTraffic"
在控件属性中设置onClick会直接完成监听。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐