百度地图的基本应用

百度地图 Android SDK是一套基于Android 2.3及以上版本设备的应用程序接口。 您可以使用该套 SDK开发适用于Android系统移动设备的地图应用,通过调用地图SDK接口,您可以轻松访问百度地图服务和数据,构建功能丰富、交互性强的地图类应用程序。

自v4.0起,适配Android Wear,支持Android穿戴设备,新增室内图相关功能。

具体步骤如下:

1.申请密钥 

具体使用步骤参考百度地图官网:http://lbsyun.baidu.com/index.php?title=androidsdk/guide/key

2.配置环境及发布

将下载的工具包解压,将其中的libs文件夹全部复制到AndroidStudio中的项目中


然后在gradle文件中添加如下代码

sourceSets {
        main {
            jniLibs.srcDir 'libs'
        }
    }
3.添加权限

<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"/>
    <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <!-- SD卡读取权限,用户写入离线定位数据-->
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
并且在Application中添加开发密钥, value中的值更改为你申请好的密钥

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        >

        <!--百度地图用到的Values值-->
        <meta-data
            android:name="com.baidu.lbsapi.API_KEY"
            android:value="开发者密钥" />
    </application>
在布局中添加地图控件

<com.baidu.mapapi.map.MapView
        android:id="@+id/bmapView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:clickable="true" />
4.初始化百度地图

新建MyApplication类,继承Application,复写OnCreate,并在清单文件中添加name属性.

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;

/**
 * Created by hatsune39 on 2017/1/3.
 * function:因为在SDK各功能组件使用之前需要调用SDKInitializer.initialize(上下文);
 * 我们把该方法放在Application的初始化方法中,新建一个类继承Application并在清单文件中配置name属性,
 */
public class MyApplication extends Application {
    //复写onCreate方法
    @Override
    public void onCreate() {
        //注册一个KEY验证是否正确的广播所有者,我们在开发APP时经常有一些验证,比如验证网络等等

        //创建一个BroadcastReceiver的内部类
        BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
            //复写必须要有的onReceive,第一个参数上下文,第二个参数传进来的Intent对象
            @Override
            public void onReceive(Context context, Intent intent) {
                //得到系统传过来的string值
                String action = intent.getAction();
                //创建一个空的字符串
                String msg = null;
                //进行检查,if判断字符串是否相同,
                // 验证KEY成功
                if (action.equals(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_OK)) {
                    msg = "验证KEY成功.";
                }
                //验证key失败
                else if (action.equals(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR)){
                    msg = "验证KEY失败";
                }
                //进行检查,if判断字符串是否相同,验证网络是否连接
                else if (action.equals(SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR)){
                    msg = "网络连接失败";
                }
                Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show();
            }
        };

        //代码进行广播的注册配置,也可以在清单文件里进行配置
        IntentFilter intentFilter = new IntentFilter();
        //添加过滤条件
        intentFilter.addAction(SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR);
        intentFilter.addAction(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR);
        intentFilter.addAction(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_OK);
        //进行广播的注册
        registerReceiver(broadcastReceiver,intentFilter);
        //进行百度地图的初始化
        SDKInitializer.initialize(this);
        super.onCreate();
    }
}

5.创建地图Activity,管理地图生命周期
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

import com.baidu.mapapi.map.MapView;

public class MainActivity extends AppCompatActivity{

    private MapView bmapView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        //1.设置不显示比例尺图标 参数false是隐藏
        bmapView.showScaleControl(false);
        //2.设置不显示缩放按钮,  参数false是隐藏
        bmapView.showZoomControls(false);
    }

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

    private void initView() {
        bmapView = (MapView) findViewById(R.id.bmapView);
    }
}
完成后能得到如下效果


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值