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

来源:互联网 发布:flash软件介绍 编辑:程序博客网 时间:2024/04/29 18:46

在基础地图模式上,增加了普通图和卫星图的切换,以及是否增加交通图的图层。

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会直接完成监听。



原创粉丝点击