百度地图SDK for Android【Demo地图图层】

来源:互联网 发布:php cgi.sock 编辑:程序博客网 时间:2024/05/02 20:13

        百度地图SDK为开发者提供了多种地图展示形式,用户可以通过相关的设置展示不同的地图图层,在这我将为大家介绍如何加载不同地图图层及各图层之间的切换。

        首先,我们要构建一个最基本的地图应用,具体介绍请参考:百度地图SDK for Android【Demo地图展示】

        在这个工程的基础之上我们做一定的修改。

        第一,修改布局文件,添加控制不同图层显示的button控件;具体代码如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context=".MainActivity" >        <!-- 放入百度地图的mapview -->    <com.baidu.mapapi.map.MapView android:id="@+id/bmapsView"android:layout_width="fill_parent"android:layout_height="fill_parent"android:clickable="true"/>    <!-- 添加button,控制地图显示 -->    <Button        android:id="@+id/button1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentRight="true"        android:layout_alignParentTop="true"        android:text="Button" /></RelativeLayout>

        第二,在主类中初始化button对象、并设置相应的点击事件。不同图层的显示使用方法setSatellite和setTraffic来实现,具体代码如下所示:

import com.baidu.mapapi.BMapManager;import com.baidu.mapapi.map.MapController;import com.baidu.mapapi.map.MapView;import com.baidu.platform.comapi.basestruct.GeoPoint;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.app.Activity;public class MainActivity extends Activity {BMapManager bMapManager = null;  // 定义管理sdk的对象MapView mapView = null;  // 定义mapview对象Button button;int flag = 0;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 初始化管理对象,注意要在setContentView(R.layout.activity_main)之前初始化,否则会报错bMapManager = new BMapManager(getApplication());bMapManager.init("您申请的key", null);setContentView(R.layout.activity_main);// 初始化mapview对象,并且设置显示缩放控件mapView = (MapView) findViewById(R.id.bmapsView);mapView.setBuiltInZoomControls(true);// 初始化buttonbutton = (Button) findViewById(R.id.button1);button.setText("点击进入《卫星图》");// 定义地图控件,获取mapview的控制,并把地图范围定位北京市MapController mapController = mapView.getController();GeoPoint point =new GeoPoint((int)(39.915* 1E6),(int)(116.404* 1E6));mapController.setCenter(point);mapController.setZoom(12);// 设置button的点击事件,根据点击次数的变化,分别设置显示普通地图、实时交通图和卫星图button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif(flag == 0){flag = flag + 1;mapView.setSatellite(true);button.setText("点击进入《实时交通图》");}else if(flag == 1){flag = flag + 1;mapView.setSatellite(false);mapView.setTraffic(true);button.setText("点击进入《普通地图》");}else if(flag == 2){flag = 0;mapView.setTraffic(false);button.setText("点击进入《卫星图》");}}});}//注意在onResume、onDestroy和onPause中控制mapview和地图管理对象的状态@Overrideprotected void onResume() {// TODO Auto-generated method stubmapView.onResume();if(bMapManager!=null){bMapManager.start();}super.onResume();}@Overrideprotected void onDestroy() {// TODO Auto-generated method stubmapView.destroy();if(bMapManager!=null){bMapManager.destroy();bMapManager=null;}super.onDestroy();}@Overrideprotected void onPause() {// TODO Auto-generated method stubmapView.onPause();if(bMapManager!=null){bMapManager.stop();}super.onPause();}}

        各图层的效果如下:

  

        点击下载原工程文件!

 

        小提示:百度地图SDK是支持地图旋转和3D特效的,双指扭转可实现地图旋转、双指下滑实现3D楼宇特效


更多详细信息请登录百度地图API官方网站:http://developer.baidu.com/map/
百度地图API论坛:http://bbs.lbsyun.baidu.com/
 

原创粉丝点击