热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

转载请标明:http:blog.csdn.netu012637501一、基础地图SDK简介    目前百度地图SDK所提供的地图等级为3-19级,所包含的信息有建筑物、

转载请标明: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


推荐阅读
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • intellij idea的安装与使用(保姆级教程)
    intellijidea的安装与使用(保姆级教程)IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(gi ... [详细]
  • 本文介绍了腾讯最近开源的BERT推理模型TurboTransformers,该模型在推理速度上比PyTorch快1~4倍。TurboTransformers采用了分层设计的思想,通过简化问题和加速开发,实现了快速推理能力。同时,文章还探讨了PyTorch在中间层延迟和深度神经网络中存在的问题,并提出了合并计算的解决方案。 ... [详细]
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • 本文介绍了pack布局管理器在Perl/Tk中的使用方法及注意事项。通过调用pack()方法,可以控制部件在显示窗口中的位置和大小。同时,本文还提到了在使用pack布局管理器时,应注意将部件分组以便在水平和垂直方向上进行堆放。此外,还介绍了使用Frame部件或Toplevel部件来组织部件在窗口内的方法。最后,本文强调了在使用pack布局管理器时,应避免在中间切换到grid布局管理器,以免造成混乱。 ... [详细]
  • 用Vue实现的Demo商品管理效果图及实现代码
    本文介绍了一个使用Vue实现的Demo商品管理的效果图及实现代码。 ... [详细]
  • 本文介绍了如何在Azure应用服务实例上获取.NetCore 3.0+的支持。作者分享了自己在将代码升级为使用.NET Core 3.0时遇到的问题,并提供了解决方法。文章还介绍了在部署过程中使用Kudu构建的方法,并指出了可能出现的错误。此外,还介绍了开发者应用服务计划和免费产品应用服务计划在不同地区的运行情况。最后,文章指出了当前的.NET SDK不支持目标为.NET Core 3.0的问题,并提供了解决方案。 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
author-avatar
热情的海浪公主
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有