文章目录

  • 覆盖物介绍
  • 添加覆盖物的步骤
  • OverlayOptions
  • 坐标点
  • 覆盖物类型
  • addOverlay()方法
  • 标注覆盖物
  • 标注覆盖物选项类
  • 标注覆盖物工厂类
  • 标注覆盖物设置监听器
  • 代码1 显示单一覆盖物
  • 代码2 显示集合标注覆盖物
  • 代码3 地图控制器标注地图覆盖物点击事件监听器
  • 代码4 地图控制器标注地图覆盖物拖拽事件监听器
  • 几何图形覆盖物
  • DotOptions - 创建圆点的选项类
  • PolylineOptions - 创建折线覆盖物选项类
  • ArcOptions - 创建弧线覆盖物选项类
  • CircleOptions - 创建圆覆盖物选项类
  • PolygonOptions - 创建多边形覆盖物选项类
  • 代码1:显示点覆盖物
  • 代码2:显示多边形覆盖物
  • 文字图形覆盖
  • TextOptions - 创建文字覆盖物选项类
  • 代码1:
  • 图层覆盖物
  • GroundOverlayOptions 创建 ground 覆盖物的选项类
  • 代码1:显示图层覆盖物
  • 弹出窗覆盖物
  • 全部代码



覆盖物介绍

所有叠加或覆盖到地图的内容,我们统称为地图 覆盖物。如文本、标注、几何图形 、信息窗口等。

添加覆盖物的步骤

  1. 定义坐标点,有可能是一个,有可能是多个(比如: 多边形覆盖物),坐标是经纬度坐标。
  2. 构造OverlayOptions(地图覆盖物选型基类)
  3. 在地图上添加覆盖物。
  4. 添加相应的监听事件。
OverlayOptions

覆盖物的基类,覆盖物都是这个类的子类。

坐标点
// 构造函数 
public LatLng(double latitude, double longitude)
latitude  - 纬度 
longitude - 经度

覆盖物类型

想要在地图上添加覆盖物需要一个OverlayOptions类型 的参数,
OverlayOptions本身是一个抽象类,想要添加 覆盖物则必须实例化其子类。

android 重叠按钮的背景_android

addOverlay()方法

在地图上添加覆盖物通过BaiduMap类的 addOverlay()方法。

添加单一覆盖物的的话是有一个返回值的。

向地图添加一个 Overlay 

Overlay addOverlay(OverlayOptions options) 
Parameters: 	options - 将要添加的 overlay 选项 
Returns: 		被添加的 overlay对象

android 重叠按钮的背景_覆盖物_02

标注覆盖物

android 重叠按钮的背景_android_03

可以在地图上显示多个

可以有监听器,比较常用。

标注覆盖物选项类

position类与icon类必须有,是必选的。

android 重叠按钮的背景_bundle_04

标注覆盖物工厂类

android 重叠按钮的背景_覆盖物_05

标注覆盖物设置监听器

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

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

代码1 显示单一覆盖物

//显示单一覆盖物
    private void fun1() {
        //1. 创建标注覆盖物对象,设置其参数
        //图标
        BitmapDescriptor bitmapDescriptor= BitmapDescriptorFactory.fromResource(R.mipmap.red_marker);
        //坐标
        LatLng position=new LatLng(39.915118,116.40397);//参数,精度,维度,竖着横着。
        //额外信息,Bundle简单封装
        Bundle bundle=new Bundle();
        bundle.putString("string1","北京不欢迎我");

        MarkerOptions markerOptions=new MarkerOptions()
                .icon(bitmapDescriptor)//设置图标,--必选
                .position(position)//设置位置,--必选
                .draggable(true)//是否可以拖拽
                .alpha(0.7f)//透明度
                .extraInfo(bundle)//添加额外信息
                .rotate(-45);//旋转角度

        //2. 显示覆盖物对象
        Marker marker= (Marker) baiduMap.addOverlay(markerOptions);
        //获得额外信息
        Bundle extraInfo=marker.getExtraInfo();
        String str1=extraInfo.getString("string1");
        Log.e("0000000001",str1);
    }

代码2 显示集合标注覆盖物

private void fun2() {
        //定义标注覆盖物集合对象
        List<OverlayOptions> markerOptionsLIst=new ArrayList<>();
        Bundle bundle1=new Bundle();
        bundle1.putString("str1","str1Message");
        //创建覆盖物集合对象,添加到集合中
        OverlayOptions options1=new MarkerOptions()
                .icon(BitmapDescriptorFactory.fromResource(R.mipmap.green_marker))
                .position(new LatLng(39.915118,116.40397))
                .draggable(true)
                .extraInfo(bundle1);

        markerOptionsLIst.add(options1);

        Bundle bundle2=new Bundle();
        bundle1.putString("str2","str2Message");
        //创建覆盖物集合对象,添加到集合中
        OverlayOptions options2=new MarkerOptions()
                .icon(BitmapDescriptorFactory.fromResource(R.mipmap.blue_marker))
                .position(new LatLng(39.955118,116.40397))
                .draggable(true)
                .extraInfo(bundle1);

        markerOptionsLIst.add(options2);




        baiduMap.addOverlays(markerOptionsLIst);
    }

代码3 地图控制器标注地图覆盖物点击事件监听器

//点击
    private void fun3() {
        baiduMap.setOnMarkerClickListener(new BaiduMap.OnMarkerClickListener() {
            @Override
            //获取bundle信息
            public boolean onMarkerClick(Marker marker) {
                Bundle bundle=marker.getExtraInfo();
                String message=bundle.getString("str1");
                Toast.makeText(getApplicationContext(),
                        message,
                        Toast.LENGTH_SHORT)
                        .show();
                return true;
            }
        });
    }

代码4 地图控制器标注地图覆盖物拖拽事件监听器

//拖拽
    private void fun4() {
        baiduMap.setOnMarkerDragListener(new BaiduMap.OnMarkerDragListener() {
            @Override//拖拽中
            public void onMarkerDrag(Marker marker) {

            }

            @Override
            public void onMarkerDragEnd(Marker marker) {
                //拖拽结束,显示当前位置坐标
                //获取坐标
                LatLng position=marker.getPosition();
                Log.e("0000000002",position.toString());
                //获取经纬度
                double lat=position.latitude;//维度
                double lng=position.longitude;//精度
                //显toast示
                Toast.makeText(
                        getApplicationContext(),
                        lat+"+++++"+lng,
                        Toast.LENGTH_LONG
                ).show();
            }

            @Override//拖拽前
            public void onMarkerDragStart(Marker marker) {

            }
        });
    }

几何图形覆盖物

没有监听器,但是可以设置很多。

地图SDK提供多种结合图形覆盖物,利用这些图形,可帮 助构建更加丰富多彩的地图应用。目前提供的几何图形有: 点(Dot)、折线(Polyline)、弧线(Arc)、圆 (Circle)、多边形(Polygon)。

android 重叠按钮的背景_bundle_06

DotOptions - 创建圆点的选项类

android 重叠按钮的背景_bundle_07

PolylineOptions - 创建折线覆盖物选项类

android 重叠按钮的背景_覆盖物_08

ArcOptions - 创建弧线覆盖物选项类

android 重叠按钮的背景_bundle_09

CircleOptions - 创建圆覆盖物选项类

android 重叠按钮的背景_覆盖物_10

PolygonOptions - 创建多边形覆盖物选项类

android 重叠按钮的背景_bundle_11


依靠点来确定

代码1:显示点覆盖物

//创建点的中心坐标(天安门广场)
        LatLng position=new LatLng(39.915118,116.40397);
        //创建覆盖物-点-的中心对象
        DotOptions dotOptions=new DotOptions()
                .center(position)//中心点位置
                .color(0Xaacccccc)//颜色
                .radius(100)//半径
                .zIndex(5)//在Z轴的位置
                ;
        //显示覆盖物
        baiduMap.addOverlay(dotOptions);

代码2:显示多边形覆盖物

//创建顶点坐标
        List<LatLng> points=new ArrayList<>();
        points.add(new LatLng(39.915118,116.40397));
        points.add(new LatLng(39.955118,116.44397));
        points.add(new LatLng(39.955118,116.40397));
        points.add(new LatLng(39.915118,116.44397));
        //创建多边形
        PolygonOptions polygonOptions=new PolygonOptions()
                .points(points)//点的集合
                .fillColor(0Xaaaaaaff)//内部填充颜色
                .zIndex(3);//Z轴高度
        //展示点
        baiduMap.addOverlay(polygonOptions);

文字图形覆盖

TextOptions - 创建文字覆盖物选项类

android 重叠按钮的背景_覆盖物_12

代码1:

//坐标
        LatLng position=new LatLng(39.928645,116.403316);
        //创建文字覆盖物对象
        TextOptions textOptions=new TextOptions()
                .position(position)
                .text("这里是故宫北门了")
                .fontColor(0Xffaa2233)
                .bgColor(0Xaacccccc)
                .fontSize(45)
                .rotate(180)
                .typeface(Typeface.DEFAULT_BOLD);//字体

        //显示
        baiduMap.addOverlay(textOptions);

图层覆盖物

地形图图层(GroundOverlay), 又可叫做图片图层,即开发者可 在地图的指定位置上添加图片。 该图片可随地图的平移、缩放、 旋转等操作做相应的变换。该图 层是一种特殊的Overlay, 它位 于地图和地标注层之间(即该图 层不会遮挡地图标注信息)。

必须有图片与位置

GroundOverlayOptions 创建 ground 覆盖物的选项类

android 重叠按钮的背景_bundle_13

代码1:显示图层覆盖物

//获得图像的BitmapDescriptor对象
        BitmapDescriptor bitmapDescriptor=BitmapDescriptorFactory.fromResource(R.mipmap.ly);
        //创建用于显示覆盖物的LatLngBounds对象
        LatLngBounds latLngBounds=new LatLngBounds.Builder()
                .include(new LatLng(39.913095,116.403658))//西南方坐标
                .include(new LatLng(39.91351,116.404323))//东北方坐标
                .build();
        //创建图层覆盖物对象
        GroundOverlayOptions groundOverlayOptions=new GroundOverlayOptions()
                .image(bitmapDescriptor)
                .positionFromBounds(latLngBounds)
                .zIndex(2);
        //显示
        baiduMap.addOverlay(groundOverlayOptions);

弹出窗覆盖物

在百度地图上可以添加一种可以 弹出的覆盖物(InfoWindow), 弹出的窗口布局可以自定义,开 发者可利用此接口,构建具有更 强交互性的地图页面。

//显示简单形式弹出窗覆盖物
        fun9();
//显示复杂布局的弹出窗覆盖物
        fun10();



   private void fun10(){
//弹出窗覆盖物的VIew对象
        View view = LayoutInflater.from(getApplicationContext())
                .inflate(R.layout.infowindow_layout,
                        null);
        //获取View的BitmapDescriptor对象
        BitmapDescriptor bp = BitmapDescriptorFactory.fromView(view);
        //创建弹出窗覆盖物显示的经纬度坐标对象
        LatLng position = new LatLng(
                39.909179,
                116.434164
        );
        //创建Infowindow的点击事件监听器
        InfoWindow.OnInfoWindowClickListener listener =
                new InfoWindow.OnInfoWindowClickListener() {

                    @Override
                    public void onInfoWindowClick() {
                        //隐藏InfoWinwdow对象
                        baiduMap.hideInfoWindow();
                    }
                };
        //创建InfoWindow对象
        infoWindow2 = new InfoWindow(
                bp,
                position,
                0,
                listener
        );
        //在地图上显示
        baiduMap.showInfoWindow(infoWindow2);
    }


    private void fun9(){
        //创建弹出窗覆盖物显示的View对象
        Button btn = new Button(getApplicationContext());
        btn.setText("简单的弹出窗覆盖物");
        btn.setTextSize(50);
        btn.setTextColor(Color.DKGRAY);
        btn.setBackgroundResource(R.mipmap.national_flag);
        //创建弹出窗覆盖物显示的经纬度坐标对象
        LatLng position = new LatLng(
                39.909179,
                116.368337
        );
        //1. 创建弹出窗覆盖物对象
        infoWindow1 = new InfoWindow(
                btn,
                position,
                0
        );
        //2. 在地图上显示弹出窗覆盖物
        baiduMap.showInfoWindow(infoWindow1);
    }

全部代码

package com.example.mybaidumap;

import androidx.appcompat.app.AppCompatActivity;

import android.graphics.Color;
import android.graphics.Point;
import android.graphics.Typeface;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.DotOptions;
import com.baidu.mapapi.map.GroundOverlayOptions;
import com.baidu.mapapi.map.InfoWindow;
import com.baidu.mapapi.map.LogoPosition;
import com.baidu.mapapi.map.MapPoi;
import com.baidu.mapapi.map.MapStatus;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.Marker;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.map.Overlay;
import com.baidu.mapapi.map.OverlayOptions;
import com.baidu.mapapi.map.PolygonOptions;
import com.baidu.mapapi.map.TextOptions;
import com.baidu.mapapi.map.UiSettings;
import com.baidu.mapapi.model.LatLng;
import com.baidu.mapapi.model.LatLngBounds;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    private Button btnRemoveIcon;//移除地图
    private Button btnTrafic;//交通地图
    private Button btnNomal;//普通地图
    private Button btnSatl;//卫星地图

    private MapView mvMap;//添加地图控件属性
    private BaiduMap baiduMap;//定义BaiduMap控制器类属性
    private UiSettings uiSettings;//定义UISettingsUI控制类属性

    //弹出窗覆盖物
    private InfoWindow infoWindow1;
    private InfoWindow infoWindow2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //初始化地图服务,必须要在setContentView方法调用之前
        SDKInitializer.initialize(getApplicationContext());
        setContentView(R.layout.activity_main);

        //获取地图控件与控制器
        mvMap = findViewById(R.id.mvMap);
        findViews();
        setListener();
        initControllers();//maiduMap对象与UI对象
//--------------------------------------------------------------------------------------------
//        设置LOGO图标位置
        setLogoPositions();
//        //隐藏LOGO图标
        hideLogo();
//        //指南针是否显示
        Log.i("lww","默认指南针显示状态:" +uiSettings.isCompassEnabled());
//        设置显示指南针
//        baiduMap.setCompassEnable(true);
//        uiSettings.setCompassEnabled(true);
//        比例尺操作
//        zoomOperation();
//        设置地图俯视图状态
//        setOverLookingStatus();



//显示标注覆盖物
//        //显示单一覆盖物
//        fun1();
//        //显示集合标注覆盖物
//        fun2();
//        //地图控制器标注地图覆盖物点击事件监听器
//        fun3();
//        //地图控制器标注地图覆盖物拖拽事件监听器
//        fun4();


//显示几何图形覆盖物
//        //显示点覆盖物
//        fun5();
//        //显示多边形覆盖物
//        fun6();





//显示文字覆盖物
        //fun7();
//显示图层覆盖物,必须有图片与位置,(人民英雄纪念碑,绿色图标)
        //fun8();
//显示简单形式弹出窗覆盖物
        //fun9();
//显示复杂布局的弹出窗覆盖物
        fun10();


    }//--------------------------------------------------------------------------------------------

    private void fun10(){
//弹出窗覆盖物的VIew对象
        View view = LayoutInflater.from(getApplicationContext())
                .inflate(R.layout.infowindow_layout,
                        null);
        //获取View的BitmapDescriptor对象
        BitmapDescriptor bp = BitmapDescriptorFactory.fromView(view);
        //创建弹出窗覆盖物显示的经纬度坐标对象
        LatLng position = new LatLng(
                39.909179,
                116.434164
        );
        //创建Infowindow的点击事件监听器
        InfoWindow.OnInfoWindowClickListener listener =
                new InfoWindow.OnInfoWindowClickListener() {

                    @Override
                    public void onInfoWindowClick() {
                        //隐藏InfoWinwdow对象
                        baiduMap.hideInfoWindow();
                    }
                };
        //创建InfoWindow对象
        infoWindow2 = new InfoWindow(
                bp,
                position,
                0,
                listener
        );
        //在地图上显示
        baiduMap.showInfoWindow(infoWindow2);
    }


    private void fun9(){
        //创建弹出窗覆盖物显示的View对象
        Button btn = new Button(getApplicationContext());
        btn.setText("简单的弹出窗覆盖物");
        btn.setTextSize(50);
        btn.setTextColor(Color.DKGRAY);
        btn.setBackgroundResource(R.mipmap.national_flag);
        //创建弹出窗覆盖物显示的经纬度坐标对象
        LatLng position = new LatLng(
                39.909179,
                116.368337
        );
        //1. 创建弹出窗覆盖物对象
        infoWindow1 = new InfoWindow(
                btn,
                position,
                0
        );
        //2. 在地图上显示弹出窗覆盖物
        baiduMap.showInfoWindow(infoWindow1);
    }






    private void fun8() {
        //获得图像的BitmapDescriptor对象
        BitmapDescriptor bitmapDescriptor=BitmapDescriptorFactory.fromResource(R.mipmap.ly);
        //创建用于显示覆盖物的LatLngBounds对象
        LatLngBounds latLngBounds=new LatLngBounds.Builder()
                .include(new LatLng(39.913095,116.403658))//西南方坐标
                .include(new LatLng(39.91351,116.404323))//东北方坐标
                .build();
        //创建图层覆盖物对象
        GroundOverlayOptions groundOverlayOptions=new GroundOverlayOptions()
                .image(bitmapDescriptor)//覆盖物图像
                .positionFromBounds(latLngBounds)//显示位置
                .zIndex(2);
        //显示
        baiduMap.addOverlay(groundOverlayOptions);

    }

    private void fun7() {
        //坐标
        LatLng position=new LatLng(39.928645,116.403316);
        //创建文字覆盖物对象
        TextOptions textOptions=new TextOptions()
                .position(position)
                .text("这里是天安门了")
                .fontColor(0Xffaa2233)
                .bgColor(0Xaacccccc)
                .fontSize(45)
                .rotate(180)
                .typeface(Typeface.DEFAULT_BOLD);//字体

        //显示
        baiduMap.addOverlay(textOptions);
    }

    private void fun6() {
        //创建顶点坐标
        List<LatLng> points=new ArrayList<>();
        points.add(new LatLng(39.915118,116.40397));
        points.add(new LatLng(39.955118,116.44397));
        points.add(new LatLng(39.955118,116.40397));
        points.add(new LatLng(39.915118,116.44397));
        //创建多边形
        PolygonOptions polygonOptions=new PolygonOptions()
                .points(points)//点的集合
                .fillColor(0Xaaaaaaff)//内部填充颜色
                .zIndex(3);//Z轴高度
        //展示点
        baiduMap.addOverlay(polygonOptions);


    }

    private void fun5() {
        //创建点的中心坐标(天安门广场)
        LatLng position=new LatLng(39.915118,116.40397);
        //创建覆盖物-点-的中心对象
        DotOptions dotOptions=new DotOptions()
                .center(position)//中心点位置
                .color(0Xaacccccc)//颜色
                .radius(100)//半径
                .zIndex(5)//在Z轴的位置
                ;
        //显示覆盖物
        baiduMap.addOverlay(dotOptions);
    }


    //拖拽
    private void fun4() {
        baiduMap.setOnMarkerDragListener(new BaiduMap.OnMarkerDragListener() {
            @Override//拖拽中
            public void onMarkerDrag(Marker marker) {

            }

            @Override
            public void onMarkerDragEnd(Marker marker) {
                //拖拽结束,显示当前位置坐标
                //获取坐标
                LatLng position=marker.getPosition();
                Log.e("0000000002",position.toString());
                //获取经纬度
                double lat=position.latitude;//维度
                double lng=position.longitude;//精度
                //显toast示
                Toast.makeText(
                        getApplicationContext(),
                        lat+"+++++"+lng,
                        Toast.LENGTH_LONG
                ).show();
            }

            @Override//拖拽前
            public void onMarkerDragStart(Marker marker) {

            }
        });
    }


    //点击
    private void fun3() {
        baiduMap.setOnMarkerClickListener(new BaiduMap.OnMarkerClickListener() {
            @Override
            //获取bundle信息
            public boolean onMarkerClick(Marker marker) {
                Bundle bundle=marker.getExtraInfo();
                String message=bundle.getString("str1");
                Toast.makeText(getApplicationContext(),
                        message,
                        Toast.LENGTH_SHORT)
                        .show();
                return true;
            }
        });
    }

    private void fun2() {
        //定义标注覆盖物集合对象
        List<OverlayOptions> markerOptionsLIst=new ArrayList<>();
        Bundle bundle1=new Bundle();
        bundle1.putString("str1","str1Message");
        //创建覆盖物集合对象,添加到集合中
        OverlayOptions options1=new MarkerOptions()
                .icon(BitmapDescriptorFactory.fromResource(R.mipmap.green_marker))
                .position(new LatLng(39.915118,116.40397))
                .draggable(true)
                .extraInfo(bundle1);

        markerOptionsLIst.add(options1);

        Bundle bundle2=new Bundle();
        bundle1.putString("str2","str2Message");
        //创建覆盖物集合对象,添加到集合中
        OverlayOptions options2=new MarkerOptions()
                .icon(BitmapDescriptorFactory.fromResource(R.mipmap.blue_marker))
                .position(new LatLng(39.955118,116.40397))
                .draggable(true)
                .extraInfo(bundle1);

        markerOptionsLIst.add(options2);




        baiduMap.addOverlays(markerOptionsLIst);
    }


    //显示单一覆盖物
    private void fun1() {
        //1. 创建标注覆盖物对象,设置其参数
        //图标
        BitmapDescriptor bitmapDescriptor= BitmapDescriptorFactory.fromResource(R.mipmap.red_marker);
        //坐标
        LatLng position=new LatLng(39.915118,116.40397);//参数,精度,维度,竖着横着。
        //额外信息,Bundle简单封装
        Bundle bundle=new Bundle();
        bundle.putString("string1","北京不欢迎我");

        MarkerOptions markerOptions=new MarkerOptions()
                .icon(bitmapDescriptor)//设置图标,--必选
                .position(position)//设置位置,--必选
                .draggable(true)//是否可以拖拽
                .alpha(0.7f)//透明度
                .extraInfo(bundle)//添加额外信息
                .rotate(-45);//旋转角度

        //2. 显示覆盖物对象
        Marker marker= (Marker) baiduMap.addOverlay(markerOptions);
        //获得额外信息
        Bundle extraInfo=marker.getExtraInfo();
        String str1=extraInfo.getString("string1");
        Log.e("0000000001",str1);
    }


    //---------------------------------------------------------------------------------------------
    /**
     * 设置地图的俯视图效果
     */
    private void setOverLookingStatus() {
        //创建俯视图的MapStatus对象
        MapStatus mapStatus = new MapStatus.Builder()
                .overlook(-45)//俯视范围:(-45,0)
                .build();
        //1 创建俯视图的MapStatusUpdate对象
        MapStatusUpdate statusUpdate =
                MapStatusUpdateFactory.newMapStatus(mapStatus);
        //2 通过百度控制器应用地图状态更新
        baiduMap.setMapStatus(statusUpdate);
    }

    /**
     * 比例尺操作
     */
    private void zoomOperation() {
        //设置是否显示比例尺(默认显示)
        mvMap.showZoomControls(true);
        //获取比例尺的大小
        Log.i("lww", "地图级别" + mvMap.getMapLevel());
        //通过设置地图更新来重新设置比例尺位置
        baiduMap.setOnMapLoadedCallback(new BaiduMap.OnMapLoadedCallback() {
            @Override
            public void onMapLoaded() {
                //改变比例尺和放大缩小图标位置
                //设置放大缩小按钮位置
                mvMap.setZoomControlsPosition(new Point(800, 200));
                //设置比例尺位置
                mvMap.setScaleControlPosition(new Point(200, 300));
            }
        });
        //设置比例尺放大缩小的范围
        baiduMap.setMaxAndMinZoomLevel(18, 9);
        //获取当前允许的最大的比例尺
        float max = baiduMap.getMaxZoomLevel();
        //获取当前允许的最小的比例尺
        float min = baiduMap.getMinZoomLevel();
        Log.i("lww", "当前比例尺范围:" + max + "---" + min);
        //设置当前默认比例尺大小
        //1. 创建一个地图状态更新对象
        MapStatusUpdate statusUpdate =
                MapStatusUpdateFactory.zoomTo(18);
        //2. 通过百度地图控制器应用状态更新
        baiduMap.setMapStatus(statusUpdate);

    }

    /**
     * 隐藏百度Logo图标
     */
    private void hideLogo() {
        //获取地图上方id为1的View(Logo的位置id=1)
        //地图展示是一层一层的,
        View logo = mvMap.getChildAt(1);
        //隐藏Logo的View
        if(null != logo && logo instanceof ImageView) {
            logo.setVisibility(View.INVISIBLE);
        }
    }

    private void setLogoPositions() {
        //通过MapView对象设置LOGO位置为底部居中
        mvMap.setLogoPosition(LogoPosition.logoPostionCenterBottom);
    }
//-------------------------------------------------------------------------------------------------
    private void setListener() {
        MyListener listener = new MyListener();
        btnSatl.setOnClickListener(listener);
        btnNomal.setOnClickListener(listener);
        btnTrafic.setOnClickListener(listener);
        btnRemoveIcon.setOnClickListener(listener);
    }

    private void initControllers() {
        //通过MapView对象获取BaiduMap控制器对象
        baiduMap = mvMap.getMap();
        //通过BaiduMap控制器对象获取UiSettings对象
        uiSettings = baiduMap.getUiSettings();
    }

    private void findViews() {
        btnNomal = findViewById(R.id.btn_nomal);
        btnSatl = findViewById(R.id.btn_salt);
        btnTrafic = findViewById(R.id.btn_trafic);
        btnRemoveIcon = findViewById(R.id.btn_remove);
    }
    class MyListener implements View.OnClickListener{

        @Override
        public void onClick(View v) {
            switch (v.getId()){
                case R.id.btn_nomal:
                    //显示普通地图(默认地图形式)
                    baiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
                    break;
                case R.id.btn_salt:
                    //显示卫星地图
                    baiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
                    break;
                case R.id.btn_trafic:
                    //显示交通图(默认不显示交通图)
                    baiduMap.setTrafficEnabled(true);
                    //显示热力图(默认不显示热力图)
//                    baiduMap.setBaiduHeatMapEnabled(true);
                    break;
                case R.id.btn_remove:
                    //删除图标
                    //首先获取到垂直方向上的id为1的View对象
                    View view = mvMap.getChildAt(1);
                    //删除
                    if(null != view){
                        mvMap.removeViewAt(1);
                    }
                    break;
            }
        }
    }




    //---------------------------------------------------三个地图与activity同步方法:
    @Override
    protected void onDestroy() {
        super.onDestroy();
        //调用地图销毁的方法
        mvMap.onDestroy();
        Log.i("lww", "onDestroy");
    }

    @Override
    protected void onResume() {
        super.onResume();
        mvMap.onResume();
        Log.i("lww", "onResume");
    }

    @Override
    protected void onPause() {
        super.onPause();
        mvMap.onPause();
        Log.i("lww", "onPause");
    }
}