百度地图

百度地图

使用百度地图获取SHA1百度地图

然后去百度搜百度地图

然后注册,注意密码大小写都要有!!!

然后点击控制台百度地图

然后点击百度地图创建应用

百度地图

应用名称随便写,应用类型选择Android SDK,包名是你创建的demo名,在清单文件中可以找到再把已经用它百度地图

获得的SHA1输入进去(他获得的是所有的,点击复制后现在一个空的text文件中粘贴,只要SHA1就可以了,千万别弄错了,不然出不来,key值不对)

最后点击提交

就会跳到这个页面

百度地图

然后在清单文件中添加(我第一次就弄错了,第二次才弄好,就是key值不对)

<meta-data
    android:name="com.baidu.lbsapi.API_KEY"
    android:value="Mya3ucDDwmLBPfUg9jV8E680uYgZv6Gu" />

下面是需要导入的包

百度地图

然后开始写代码

百度地图

主页面

package com.example.lx_baiduditu;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ZoomControls;

import com.baidu.mapapi.map.BaiduMap;
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.UiSettings;
import com.baidu.mapapi.model.LatLng;
import com.example.lx_baiduditu.R;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    //主要是用Map对象来改变坐标用的.清华大学坐标,创建LatLng(40.009424, 116.332556);
    LatLng xh=new LatLng(31.832944,117.191521);
    //北京大学坐标.   (39.997743, 116.316176);
    LatLng HC=new LatLng(31.891637,117.324073);
    //天安门坐标     (39.915112, 116.403963)

    private MapView mapView_mv;

    private BaiduMap baiduMap;

    private Button zoomOut_bt;
    private Button zoomIn_bt;
    private Button setCompassEnabled_bt;
    private Button rotate_bt;
    private Button overlook_bt;
    private Button newLatLng_bt;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //在使用SDK各组件之前初始化context信息,传入ApplicationContext
        //注意该方法要再setContentView方法之前实现
        setContentView(R.layout.activity_main);
        //控件初始化
        initView();
        //运行后自动隐藏百度的logo
        View child = mapView_mv.getChildAt(1);
        if (child != null && (child instanceof ImageView || child instanceof ZoomControls)){
            child.setVisibility(View.INVISIBLE);
        }

        //1.0,使用MapVIew对象,控制是否显示MapVIew上面的按钮
        //设置不显示缩放控件    该方法的参数是boolen,false是不显示缩放控件
        mapView_mv.showScaleControl(false);
        //设置不显示比例尺控件    该方法的参数是boolen,false是不显示比例尺控件
        mapView_mv.showZoomControls(false);

        //2.获取获取最小(3)、最大缩放级别(21)
        //获取最小的级别,map对象.getMinZoomLevel();
        float minZoomLevel = baiduMap.getMinZoomLevel();
        System.out.println("地图最小的级别minZoomLevel:  "+minZoomLevel);
        //获取最大的级别,map对象.getMaxZoomLevel();
        float maxZoomLevel = baiduMap.getMaxZoomLevel();
        System.out.println("地图最大的级别maxZoomLevel:  "+maxZoomLevel);

        //3.进入地图,默认的中心点是天安门,改变地图中心点为新华大学.
        //使用MapStatusUpdateFactory工厂调用newLatLng方法,参数还是一个LatLng对象(其参数,先是维度,后是经度)
        MapStatusUpdate newLatLng = MapStatusUpdateFactory.newLatLng(xh);
        //BaiduMap对象调用setMapStatus方法往里面穿参数MapStatusUpdate对象.
        baiduMap.setMapStatus(newLatLng);

        //4.设置地图缩放为15,使用MapStatusUpdateFactory工厂调用zoomTo,得到MapStatusUpdate对象.
        MapStatusUpdate zoomTo = MapStatusUpdateFactory.zoomTo(15);
        //BaiduMap对象调用setMapStatus方法往里面穿参数(MapStatusUpdate)对象.
        baiduMap.setMapStatus(zoomTo);

    }

    /*
     * 5.通过点击事件,更新地图状态(就是让地图,放大缩小,旋转,俯仰,移动,隐藏指南针)
     * @param
     */
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.zoomOut_bt:
                //缩小,使用MapStatusUpdateFactory工厂调用zoomOut方法,得到MapStatusUpdate
                MapStatusUpdate zoomOut = MapStatusUpdateFactory.zoomOut();
                //在用map对象.setMapStatus,把MapStatusUpdate对象传入.
                baiduMap.setMapStatus(zoomOut);
                break;
            case R.id.zoomIn_bt:
                //放大,使用MapStatusUpdateFactory工厂调用zoomIn,得到MapStatusUpdate
                MapStatusUpdate zoomIn = MapStatusUpdateFactory.zoomIn();
                //在用map对象.setMapStatus,把MapStatusUpdate对象传入.
                baiduMap.setMapStatus(zoomIn);
                break;
            case R.id.rotate_bt:
                //旋转(0 ~ 360),每次在原来的基础上再旋转30度
                // 获取当前地图的状态,map对象.getMapStatus,直接获取到MapStatus
                MapStatus mapStatus = baiduMap.getMapStatus();
                //然后MapStatus.rotate就可以拿到原来的旋转度数.
                float rotate = mapStatus.rotate;


                //通过new MapStatus.Builder得到MapStatus.Builder对象
                MapStatus.Builder builder = new MapStatus.Builder();
                //用MapStatus.Builder对象.rotate(原来旋转的度数+30);
                builder.rotate(rotate + 30);
                //用MapStatus.Builder对象.build,得到MapStatus对象
                MapStatus build = builder.build();
                //用使用MapStatusUpdateFactory工厂调用newMapStatus,把MapStatus对象传入.得到MapStatusUpdate
                MapStatusUpdate newMapStatus = MapStatusUpdateFactory.newMapStatus(build);
                //map对象.setMapStatus,传入MapStatusUpdate对象
                baiduMap.setMapStatus(newMapStatus);

                break;
            case R.id.overlook_bt:
                //俯仰(0 ~ -45),每次在原来的基础上再俯仰-5度
                //获取当前地图的状态,map对象.getMapStatus,直接获取到MapStatus
                MapStatus mapStatus1 = baiduMap.getMapStatus();
                //然后MapStatus.overlook就可以拿到原来的俯仰度数.
                float overlook = mapStatus1.overlook;

                //通过new MapStatus.Builder得到MapStatus.Builder对象
                MapStatus.Builder builder1 = new MapStatus.Builder();
                //用MapStatus.Builder对象.overlook(原来俯仰的度数-5);
                builder1.overlook(overlook - 5);
                //用MapStatus.Builder对象.build,得到MapStatus对象
                MapStatus build1 = builder1.build();
                //用使用MapStatusUpdateFactory工厂调用newMapStatus,把MapStatus对象传入.得到MapStatusUpdate
                MapStatusUpdate newMapStatusOverlook = MapStatusUpdateFactory.newMapStatus(build1);
                ////map对象.setMapStatus,传入MapStatusUpdate对象
                baiduMap.setMapStatus(newMapStatusOverlook);
                break;
            case R.id.newLatLng_bt:
                //移动,用使用MapStatusUpdateFactory工厂调用newLatLng(LatLng参数);
                MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.newLatLng(HC);
                //map对象.animateMapStatus,第一个参数是mapStatusUpdate对象,第二个参数是动画执行多少秒.
                baiduMap.animateMapStatus(mapStatusUpdate,20000);
                break;
            case R.id.setCompassEnabled_bt:
                //.获取地图Ui控制器:隐藏指南针,Map对象.getUiSettings.setCompassEnabled, false是不显示指南针
                UiSettings uiSettings = baiduMap.getUiSettings();
                uiSettings.setCompassEnabled(false);
                break;
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
        mapView_mv.onDestroy();
    }

    @Override
    protected void onResume() {
        super.onResume();
        //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
        mapView_mv.onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
        //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
        mapView_mv.onPause();
    }


    /**
     * 控件的初始化
     */
    private void initView() {
        mapView_mv = (MapView) findViewById(R.id.mapView_mv);
        //获取对MapVIew的控制类BaiduMap,MapView对象.getMap
        baiduMap = mapView_mv.getMap();

        zoomOut_bt = (Button) findViewById(R.id.zoomOut_bt);
        zoomIn_bt = (Button) findViewById(R.id.zoomIn_bt);
        rotate_bt = (Button) findViewById(R.id.rotate_bt);
        overlook_bt = (Button) findViewById(R.id.overlook_bt);
        newLatLng_bt = (Button) findViewById(R.id.newLatLng_bt);
        setCompassEnabled_bt = (Button) findViewById(R.id.setCompassEnabled_bt);

        zoomOut_bt.setOnClickListener(this);
        zoomIn_bt.setOnClickListener(this);
        rotate_bt.setOnClickListener(this);
        overlook_bt.setOnClickListener(this);
        newLatLng_bt.setOnClickListener(this);
        setCompassEnabled_bt.setOnClickListener(this);
    }

   /*
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        MapStatusUpdate mapStatusUpdate = null;
        switch (keyCode) {
            case KeyEvent.KEYCODE_1:
                // 1)  缩小
                mapStatusUpdate = MapStatusUpdateFactory.zoomOut();
                break;
            case KeyEvent.KEYCODE_2:
                // 2)  放大
                mapStatusUpdate = MapStatusUpdateFactory.zoomIn();
                break;
            case KeyEvent.KEYCODE_3:
                // 获取当前地图的状态
                MapStatus currentMapStatus = baiduMap.getMapStatus();
                float rotate = currentMapStatus.rotate;
                System.out.println("rotate = " + rotate);

                // 3)  旋转(0 ~ 360),每次在原来的基础上再旋转30度
                MapStatus.Builder builder = new MapStatus.Builder();
                builder.rotate(rotate + 30);
                MapStatus mapStatus = builder.build();
                mapStatusUpdate = MapStatusUpdateFactory.newMapStatus(mapStatus);
                break;
            case KeyEvent.KEYCODE_4:
                // 4)  俯仰(0 ~ -45),每次在原来的基础上再俯仰-5度
                currentMapStatus = baiduMap.getMapStatus();
                float overlook = currentMapStatus.overlook;
                System.out.println("overlook = " + overlook);

                builder = new MapStatus.Builder();
                builder.overlook(overlook  -5);
                mapStatus = builder.build();
                mapStatusUpdate = MapStatusUpdateFactory.newMapStatus(mapStatus);
                break;
            case KeyEvent.KEYCODE_5:
                // 5)  移动
                mapStatusUpdate = MapStatusUpdateFactory.newLatLng(HC);
                baiduMap.animateMapStatus(mapStatusUpdate, 4000);
                return true;
            case KeyEvent.KEYCODE_6:
                // 6.  获取地图Ui控制器:隐藏指南针
                baiduMap.getUiSettings().setCompassEnabled(false); // 不显示指南针
                return true;
        }
        // 5.  更新地图状态
        baiduMap.setMapStatus(mapStatusUpdate);
        return super.onKeyDown(keyCode, event);
    }*/

}

MyApp中代码

package com.example.lx_baiduditu;

import android.app.Application;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.widget.Toast;

import com.baidu.mapapi.SDKInitializer;

/**
 * date:2016/8/17
 * author:易宸锋(dell)
 * function:
 */
public class MyApp extends Application {
    public void onCreate() {
        // 注册一个key验证是否正确的广播所者,我们在开发APP时,经常有一些验证,比如网络等,具体流程如下
        //创建一个BroadcastReceiver的内部类,
        super.onCreate();
        BroadcastReceiver receiver = new BroadcastReceiver() {
            //复写其必须有的方法onReceive,第一个参数上下文,第二个参数是传过来的intent.
            public void onReceive(Context context, Intent intent) {
                //参数intent.getAction得到发送过来的Intent里的action动作
                String action = intent.getAction();
                //创建一个null的字符串.
                String msg = "";
                //进行检查,if判断字符串是否相同,action.equals(),直接用SDKInitializer.SDK_BROADTCAST_ACTION_ST...就可以了
                if (action.equals(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_OK)) {
                    msg = "Key验证成功!";
                }//判断SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR :验证失败
                else if (action.equals(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR)) {
                    msg = "Key验证失败!";
                }//判断SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR :网络错误
                else if (action.equals(SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR)) {
                    msg = "网络错误";
                }
                //弹吐司,内容就是字符串.
                Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show();
            }
        };
        //代码进行广播的注册配置,也可以在清单配置文件里进行配置
        IntentFilter filter = new IntentFilter();
        //添加过滤条件,IntentFilter对象.addAction();内容就是SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_....
        filter.addAction(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_OK);
        filter.addAction(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR);
        filter.addAction(SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR);
        //进行广播注册,1.要注册广播类对象 2配置文件IntentFilter对象.
        registerReceiver(receiver, filter);
        // 初始化百度地图SDK
        SDKInitializer.initialize(getApplicationContext());
    }


}

ListActivity代码

package com.example.lx_baiduditu;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;

/**
 * date:2016/8/28
 * author:易宸锋(dell)
 * function:创建一个ListActivity,继承ListActivity,让此类成为入口Home,在清单文件进行配置,成为用户的接口
 */
public class ListActivity extends android.app.ListActivity {
    //创建一个内部类的数组, NameAndClass[] datas = {new 一个内部类()}
    NameAndClass[] datas = {
            new NameAndClass("HelloBaiduMap", MainActivity.class),
            new NameAndClass("地图分层",LayerDemoAcitivty.class ),
    };

    /**
     * 复写onCreate   @param savedInstanceState
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //new ArrayAdapter对象 泛型是自定义的内部类  1.第一个参数是上下文,2.android.R.layout.simple_list_item_11 3.内部类数组
        ArrayAdapter<NameAndClass> adapter = new ArrayAdapter<NameAndClass>(this, android.R.layout.simple_list_item_1, datas);
        //setListAdapter,直接传入ArrayAdapter对象.
        setListAdapter(adapter);
    }

    /**
     * 复写点击事件onListItemClick
     */
    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        //进行页面跳转,startActivity,参数是创建个Intent对象,1.上下文 2.跳转类,内部类数组[position].clazz
        startActivity(new Intent(this, datas[position].clazz));
    }

    /**
     *     创建内部类 class NameAndClass {}
     */
    class NameAndClass {
        //定义String name;
        String name;
        //定义Class<?> clazz;
        Class<?> clazz;
        //自动生成构造方法.
        public NameAndClass(String name, Class<?> clazz) {
            super();
            this.name = name;
            this.clazz = clazz;
        }
        //自动生成toString方法.
        @Override
        public String toString() {
            return name;
        }
    }



}

LayerDemoActivity代码

package com.example.lx_baiduditu;

import android.view.KeyEvent;

import com.baidu.mapapi.map.BaiduMap;

public class LayerDemoAcitivty extends BaseActivity {

   /**
    *onKeyDown,该方法是更加键盘的按键,完成不同的操作.
    * @return
    */
   @Override
   public boolean onKeyDown(int keyCode, KeyEvent event) {
      //使用switch.进行判断
      switch (keyCode) {
         // 显示卫星图层
         case KeyEvent.KEYCODE_1:
            //使用baiduMap对象,调用setMapType方法,传入BaiduMap.MAP_TYPE_SATELLITE参数
            map.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
            //使用baiduMap对象,调用setTrafficEnabled();false是关闭交通层.
            map.setTrafficEnabled(false);
            break;
         // 显示普通图层
         case KeyEvent.KEYCODE_2:
            //使用baiduMap对象,调用setMapType方法,传入BaiduMap.MAP_TYPE_NORMAL参数._
            map.setMapType(BaiduMap.MAP_TYPE_NORMAL);
            //使用baiduMap对象,调用setTrafficEnabled();false是关闭交通层.
            map.setTrafficEnabled(false);
            break;
         // 显示交通图
         case KeyEvent.KEYCODE_3:
            //使用baiduMap对象,调用setTrafficEnabled();true是打开交通层.
            map.setTrafficEnabled(true);
            break;

         default:
            break;
      }

      return super.onKeyDown(keyCode, event);
   }
}

适配器BaseActivity代码

package com.example.lx_baiduditu;

import android.app.Activity;
import android.os.Bundle;

import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.model.LatLng;

/**
 * date:2016/9/2
 * author:易宸锋(dell)
 * function:创建一个BaseActivity类,以后在创建百度地图的Activity时,继承BaseActivity.
 */
public class BaseActivity extends Activity {

    protected MapView mapView;
    /** 地图控制器,用以控制地图的移动、旋转、放大缩小等等 */
    protected BaiduMap map;
    /** 清华大学*/
    protected LatLng qhPos = new LatLng(40.009424,116.332556);
    /** 北京坐标 */
    protected LatLng bjPos = new LatLng(39.997743,116.316176);
    /** 天安门坐标 */
    protected LatLng tamPos = new LatLng(39.915112,116.403963);


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout);
        // 获取地图控件引用
        mapView = (MapView) findViewById(R.id.mapView_mv);
        map = mapView.getMap();    // 获取地图控制器

        // 1.  隐藏缩放按钮、比例尺
        mapView.showScaleControl(true);    // 设置比例尺是否显示
        mapView.showZoomControls(true);    // 设置缩放按钮是否显示

        // 2.  获取获取最小(3)、最大缩放级别(20)
        float minZoomLevel = map.getMinZoomLevel();
        float maxZoomLevel = map.getMaxZoomLevel();
        System.out.println("minZoomLevel = " + minZoomLevel + ", maxZoomLevel = " + maxZoomLevel);

        // 3.  设置地图中心点为清华大学
        MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.newLatLng(qhPos);
        map.setMapStatus(mapStatusUpdate);

        // 4.  设置地图缩放为15
        mapStatusUpdate = MapStatusUpdateFactory.zoomTo(15);
        map.setMapStatus(mapStatusUpdate);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        // 在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
        mapView.onDestroy();
    }

    @Override
    protected void onResume() {
        super.onResume();
        // 在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
        mapView.onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
        // 在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
        mapView.onPause();
    }

}

主页面布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
   >

    <com.baidu.mapapi.map.MapView
        android:id="@+id/mapView_mv"
        android:layout_width="match_parent"
        android:layout_weight="1"
        android:layout_height="0dp"
        android:clickable="true" />

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <Button
            android:id="@+id/zoomOut_bt"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:text="缩小"/>

        <Button
            android:id="@+id/zoomIn_bt"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:text="放大"/>

        <Button
            android:id="@+id/rotate_bt"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:text="旋转"/>

        <Button
            android:id="@+id/overlook_bt"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:text="俯仰"/>

        <Button
            android:id="@+id/newLatLng_bt"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:text="定位"/>

        <Button
            android:id="@+id/setCompassEnabled_bt"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:text="隐藏"/>

    </LinearLayout>

</LinearLayout>

写的控件布局layout

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.baidu.mapapi.map.MapView
        android:id="@+id/mapView_mv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:clickable="true" />


</LinearLayout>

清单文件中添加的权限和更改的东西

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.lx_baiduditu">
    <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />

    <!-- 这个权限用于进行网络定位 -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <!-- 这个权限用于访问GPS定位 -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <!-- 获取运营商信息,用于支持提供运营商信息相关的接口 -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!-- 用于读取手机当前的状态 -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <!-- 访问网络,网络定位需要上网 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <application
        android:name=".MyApp"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <meta-data
            android:name="com.baidu.lbsapi.API_KEY"
            android:value="Mya3ucDDwmLBPfUg9jV8E680uYgZv6Gu" />
        <activity android:name="com.example.lx_baiduditu.LayerDemoAcitivty"/>
    </application>

</manifest>

红色字体是包名,改成自己的就可以了

需要添加的依赖,也就是libs文件夹下的那一堆东西,直接添加小奶瓶就行了,不过还要添加一些东西

用红色字体显示

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26



    defaultConfig {
        applicationId "com.example.lx_baiduditu"
        minSdkVersion 15
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    sourceSets {
        main {
            jniLibs.srcDir 'libs'
        }
    }

}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation files('libs/baidumapapi_base_v3_7_3.jar')
    implementation files('libs/baidumapapi_cloud_v3_7_3.jar')
    implementation files('libs/baidumapapi_map_v3_7_3.jar')
    implementation files('libs/baidumapapi_radar_v3_7_3.jar')
    implementation files('libs/baidumapapi_search_v3_7_3.jar')
    implementation files('libs/baidumapapi_util_v3_7_3.jar')
    implementation files('libs/locSDK_6.13.jar')
}

如果还不行请参考这个:

 怕不是最详细的集成笔记......
https://app.yinxiang.com/shard/s46/nl/19613160/898d58ab-f5d6-48a3-8483-bf8b5eead3b8
百度地图的,只有地图显示

定位bug

 百度SDK共性问题:在定位上,第一个参数是维度,第二参数是经度.(而我们平常是经度在前,维度在后,称经纬度.百度这个定义虽然没有什么大问题,但是和我们的习惯不符合) 


放大缩小bug,就是有些手机加载的话放大缩小图片会变得非常大

 百度SDK3.7版本:百度地图提供的地图模块里有关放大缩小的Button按钮,适配没有做.
百度地图

大神们用这个消除百度logo

 怎么取消掉百度地图默认所带的LOGO
补充:隐藏百度地图左下角的LOGO 
- 百度地图的LOGO图片放在baidumapapi_map_vxxx.jar下的assert目录底下
- 将此jar包放到本地,解压打开,使用2张透明的图片替换LOGO图片即可
- 将替换好的jar包放到工程的libs文件夹下面

使用百度地图时有个bug就是他会在左下角显示百度的logo,更换太麻烦,不过不怕,用下面的代码就可以清除

 // 隐藏logo
        View child = mMapView.getChildAt(1);
        if (child != null && (child instanceof ImageView || child instanceof ZoomControls)){
            child.setVisibility(View.INVISIBLE);
        }
oncreate方法里写
隐藏百度地图的logo
注意:
在一些机型会出现显示不出来地图控件,比如在oppo手机上就什么都没有
百度地图不能运行到genymotion虚拟机上面,会报异常,只能运行到小米乐视真机上.


百度地图出现空白或者都是格子状的问题:
 * 1.模拟器没网络,没有开网络权限
 * 2.包名或者sha1值出错
 * 3.没有初始