码迷,mamicode.com
首页 > 其他好文 > 详细

02.(最新版)百度地图§基础底图BaiduMap

时间:2015-05-09 11:45:21      阅读:345      评论:0      收藏:0      [点我收藏+]

标签:地图开发   android   百度地图   

转载请标明:http://blog.csdn.net/u012637501

一、基础地图SDK简介    

    目前百度地图SDK所提供的地图等级为3-19级,所包含的信息有建筑物、道路、河流、学校、公园等内容。所有叠加或覆盖到地图的内容,我们统称为地图覆盖物。如标注、矢量图形元素(包括:折线、多边形和圆等)、定位图标等。覆盖物拥有自己的地理坐标,当您拖动或缩放地图时,它们会相应的移动。百度地图SDK为广大开发者提供的基础地图和上面的各种覆盖物元素,具有一定的层级压盖关系,具体如下(从下至上的顺序):

1、基础底图(包括底图、底图道路、卫星图等);

2、地形图图层(GroundOverlay);

3、热力图图层(HeatMap);

4、实时路况图图层(BaiduMap.setTrafficEnabled(true););

5、百度城市热力图(BaiduMap.setBaiduHeatMapEnabled(true););

6、底图标注(指的是底图上面自带的那些POI元素);

7、几何图形图层(点、折线、弧线、圆、多边形);

8、标注图层(Marker),文字绘制图层(Text);

9、指南针图层(当地图发生旋转和视角变化时,默认出现在左上角的指南针);

10、定位图层(BaiduMap.setMyLocationEnabled(true););

11、弹出窗图层(InfoWindow);

12、自定义View(MapView.addView(View);)

二、BaiduMap类

1.作用:地图控制器,定义BaiduMap地图对象的操作方法与接口;

2.获取BaiduMap实例

    BaiduMap mBaiduMap=null;

    mBaiduMap = mapView.getMap();

3.嵌套类(部分)与静态常量

static BaiduMap.OnMapClickListener :地图单击事件监听接口 

static BaiduMap.OnMapDoubleClickListener :地图双击事件监听接口 

static BaiduMap.OnMapLoadedCallback :地图加载完成回调接口 

static BaiduMap.OnMapLongClickListener :地图长按事件监听接口 

static BaiduMap.OnMapTouchListener :用户触摸地图时回调接口 

static BaiduMap.OnMarkerClickListener :地图 Marker 覆盖物点击事件监听接口 

static BaiduMap.OnMarkerDragListener :地图 Marker 覆盖物拖拽事件监听接口 

static BaiduMap.OnMyLocationClickListener :地图定位图标点击事件监听接口 

static int MAP_TYPE_NORMAL:普通地图模式常量, setMapType(int) 

static int MAP_TYPE_SATELLITE:卫星图模式常量,setMapType(int)

4.常用方法

Overlay addOverlay(OverlayOptions options):向地图添加一个 Overlay

void clear():清空地图所有的 Overlay 覆盖物以及 InfoWindow

MyLocationData getLocationData():获取定位数据

void setMapType(int type):设置地图类型 MAP_TYPE_NORMAL 普通图; MAP_TYPE_SATELLITE 卫星图

void setMaxAndMinZoomLevel(float max, float min):设置地图最大以及最小缩放级别,地图支持的最大最小级别分别为[3-20]

void setOnMapClickListener(BaiduMap.OnMapClickListener listener):设置地图单击事件监听者

void setTrafficEnabled(boolean enabled):设置是否打开交通图层

void snapshot(BaiduMap.SnapshotReadyCallback callback):发起截图请求

三、基础地图开发方法

1.地图类型

    百度地图Android SDK为您提供了两种类型的地图资源(普通矢量地图和卫星图),我们可以利用BaiduMap中的mapType()方法来设置地图类型。核心代码如下:

  1. BaiduMap mBaiduMap = null;    
  2. mMapView = (MapView) findViewById(R.id.bmapView);  
  3. mBaiduMap = mMapView.getMap();                                       //获取地图控制器  
  4. mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);    //普通地图  
  5. mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);//卫星地图 

效果如下:

技术分享

2.实时交通图

当前,全国范围内已支持多个城市实时路况查询,且会陆续开通其他城市。在地图上打开实时路况的核心代码如下:

  1. BaiduMap mBaiduMap = null;
  2. mMapView = (MapView) findViewById(R.id.bmapView);  
  3. mBaiduMap = mMapView.getMap();  
  4. mBaiduMap.setTrafficEnabled(true);    //开启交通图

3.百度城市热力图

  1. BaiduMap mBaiduMap = null;
  2. mMapView = (MapView) findViewById(R.id.bmapView);  
  3. mBaiduMap = mMapView.getMap();  
  4. mBaiduMap.setBaiduHeatMapEnabled(true);//开启交通图  

效果如下:

技术分享

四、源码实现

(1)MainActivity.java

  1. package base.baidu.oncampus;  
  2. import android.app.Activity;  
  3. import android.os.Bundle;  
  4. import android.view.View;  
  5. import android.view.View.OnClickListener;  
  6. import android.widget.Button;  
  7. import android.widget.RadioButton;  
  8. import com.baidu.mapapi.SDKInitializer;  
  9. import com.baidu.mapapi.map.BaiduMap;  
  10. import com.baidu.mapapi.map.MapView;  
  11. public class MainActivity extends Activity {  
  12.     private MapView mapView = null;  
  13.     private RadioButton normalMap = null;  
  14.     private RadioButton sateliteMap = null;  
  15.     private Button rtMap = null;  
  16.     private Button heatMap = null;  
  17.     private BaiduMap baiduMap = null;  
  18.     private boolean rtBtnFlag = false;   //实时地图按钮标志  
  19.     private boolean heatBtnFlag = false;     //城市热力图地图按钮标志  
  20.     //初始化组件  
  21.     private void init()  
  22.     {  
  23.      mapView = (MapView)findViewById(R.id.bmapView);     //地图控件引用  
  24.      normalMap = (RadioButton)findViewById(R.id.normalMap);  
  25.      sateliteMap = (RadioButton)findViewById(R.id.sateliteMap);  
  26.      rtMap = (Button)findViewById(R.id.rtMap);  
  27.      heatMap = (Button)findViewById(R.id.heatMap);  
  28.     }  
  29.  protected void onCreate(Bundle savedInstanceState) {  
  30.         super.onCreate(savedInstanceState);  
  31.         SDKInitializer.initialize(getApplicationContext()); //在使用SDK各组件之前初始化context信息,传入AplicationContext  
  32.         setContentView(R.layout.main);  
  33.          this.init();  
  34.          baiduMap = mapView.getMap();    //获取地图控制器  
  35.          //1.使用普通矢量地图  
  36.          normalMap.setOnClickListener(new OnClickListener() {  
  37.    public void onClick(View v) {  
  38.     baiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);  
  39.    }  
  40.   });  
  41.          //2.使用卫星地图  
  42.          sateliteMap.setOnClickListener(new OnClickListener() {  
  43.    public void onClick(View v) {  
  44.      baiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);  
  45.    }  
  46.   });  
  47.          //3.显示实时交通图  
  48.          rtMap.setOnClickListener(new OnClickListener() {  
  49.    public void onClick(View v) {  
  50.     if(rtBtnFlag == false)  
  51.     {  
  52.      baiduMap.setTrafficEnabled(true);  
  53.      rtBtnFlag=true;  
  54.     }  
  55.     else  
  56.     {  
  57.      baiduMap.setTrafficEnabled(false);  
  58.      rtBtnFlag=false;  
  59.     }  
  60.    }  
  61.   });  
  62.            
  63.    //4.城市热力图  
  64.    heatMap.setOnClickListener(new OnClickListener() {  
  65.    public void onClick(View v) {  
  66.     if(heatBtnFlag == false)  
  67.     {  
  68.      baiduMap.setBaiduHeatMapEnabled(true);  
  69.      heatBtnFlag=true;  
  70.     }  
  71.     else  
  72.     {  
  73.      baiduMap.setBaiduHeatMapEnabled(false);  
  74.      heatBtnFlag=false;  
  75.     }  
  76.    }  
  77.   });  
  78.  }  
  79.  @Override  
  80.  protected void onDestroy() {  
  81.   mapView.onDestroy();   //关闭百度地图  
  82.   super.onDestroy();  
  83.  }  
  84.  @Override  
  85.  protected void onPause() {  
  86.   mapView.onPause();     //暂停使用百度地图  
  87.   super.onPause();  
  88.  }  
  89.  @Override  
  90.  protected void onResume() {  
  91.   mapView.onResume();    //恢复使用百度地图  
  92.   super.onResume();  
  93.  }  
  94.    
  95.  

(2)AndroidManifest.xml

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     package="base.baidu.oncampus"  
  4.     android:versionCode="1"  
  5.     android:versionName="1.0" >  
  6.     <!-- 使用权限 -->  
  7.  <uses-permission android:name="android.permission.GET_ACCOUNTS" />  
  8.  <uses-permission android:name="android.permission.USE_CREDENTIALS" />  
  9.  <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />  
  10.  <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />  
  11.  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  
  12.  <uses-permission android:name="android.permission.INTERNET" />  
  13.  <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />  
  14.  <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />  
  15.  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />  
  16.  <uses-permission android:name="android.permission.READ_PHONE_STATE" />  
  17.  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  
  18.  <uses-permission android:name="android.permission.BROADCAST_STICKY" />  
  19.  <uses-permission android:name="android.permission.WRITE_SETTINGS" />  
  20.    <!-- 添加对屏幕的支持 -->  
  21.  <supports-screens  
  22.          android:largeScreens="true"  
  23.    android:normalScreens="true" android:smallScreens="true"  
  24.    android:resizeable="true" android:anyDensity="true"/>  
  25.     <uses-sdk  
  26.         android:minSdkVersion="8"  
  27.         android:targetSdkVersion="19" />  
  28.     <application  
  29.         android:allowBackup="true"  
  30.         android:icon="@drawable/ic_launcher"  
  31.         android:label="@string/app_name"  
  32.         android:theme="@style/AppTheme" >  
  33.         <!-- 开发密匙 -->  
  34.         <meta-data  
  35.         android:name="com.baidu.lbsapi.API_KEY"  
  36.         android:value="RtDd41VBHQLPeFIS5YjNK1y7" />  
  37.          
  38.         <activity  
  39.             android:name=".MainActivity"  
  40.             android:label="@string/app_name" >  
  41.             <intent-filter>  
  42.                 <action android:name="android.intent.action.MAIN" />  
  43.                 <category android:name="android.intent.category.LAUNCHER" />  
  44.             </intent-filter>  
  45.         </activity>  
  46.     </application>  
  47. </manifest>  

(3)布局文件main.xml

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:orientation="vertical" >  
  6.     <LinearLayout  
  7.         android:layout_width="match_parent"  
  8.         android:layout_height="wrap_content"  
  9.         android:layout_marginTop="5dp"  
  10.         android:layout_marginBottom="5dp"  
  11.         android:orientation="horizontal">  
  12.         <RadioGroup  
  13.             android:layout_width="wrap_content"  
  14.             android:layout_height="match_parent"  
  15.             android:gravity="start|center_vertical"  
  16.             android:orientation="vertical">  
  17.         <RadioButton  
  18.             android:id="@+id/normalMap"  
  19.             android:layout_width="wrap_content"  
  20.             android:layout_height="wrap_content"  
  21.             android:checked="true"  
  22.             android:textSize="14sp"  
  23.             android:text="普通地图"/>  
  24.         <RadioButton  
  25.             android:id="@+id/sateliteMap"  
  26.             android:layout_width="wrap_content"  
  27.             android:layout_height="wrap_content"  
  28.             android:textSize="14sp"  
  29.             android:checked="false"  
  30.             android:text="卫星地图" />  
  31.         </RadioGroup>  
  32.          
  33.         <Button  
  34.             android:id="@+id/rtMap"  
  35.             android:layout_width="wrap_content"  
  36.             android:layout_height="wrap_content"  
  37.             android:layout_marginStart="5dp"  
  38.             android:layout_marginLeft="5dp"  
  39.             android:textSize="12sp"  
  40.             android:text="实时交通"/>  
  41.          <Button  
  42.             android:id="@+id/heatMap"  
  43.             android:layout_width="wrap_content"  
  44.             android:layout_height="wrap_content"  
  45.             android:layout_marginStart="5dp"  
  46.             android:layout_marginLeft="5dp"  
  47.             android:textSize="12sp"  
  48.             android:text="城市热力图"/>  
  49.     </LinearLayout>  
  50.      
  51.  <com.baidu.mapapi.map.MapView  
  52.      android:id="@+id/bmapView"  
  53.      android:layout_width="fill_parent"  
  54.      android:layout_height="fill_parent"  
  55.      android:clickable="true"/>  
  56. </LinearLayout>  

02.(最新版)百度地图§基础底图BaiduMap

标签:地图开发   android   百度地图   

原文地址:http://blog.csdn.net/u012637501/article/details/45599671

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!