百度地图开发平台网址http://lbsyun.baidu.com/index.php?title=首页
程序所需资源 http://pan.baidu.com/s/1pLwGmMZ
代码框架
程序效果
一丶创建应用
创建一个新应用需要这三样东西,具体如何获得请往下看
获得 开发版SHA1
出现输入秘钥口令后按下回车即可
复制SHA1YESHI1按下回车即可
开发版SHA1为 EA:F4:F3:B1:2E:F2:4B:16:87:82:96:75:68:D4:EC:CE:D9:23:8E:88
获得 发布版SHA1
用一个小程序可以非常方便的获得发布版SHA1
获得的信息如下
应用名 -> baiduMapDemo
版本号 -> 1.0(1)
包名 -> com.dubuwucool.baidumapdemo
SHA1 -> EA:F4:F3:B1:2E:F2:4B:16:87:82:96:75:68:D4:EC:CE:D9:23:8E:88
key(ak) ->
发布版SHA1为EA:F4:F3:B1:2E:F2:4B:16:87:82:96:75:68:D4:EC:CE:D9:23:8E:88
通常情况下发布版SHA1和开发版SHA1是一致的
获得包名com.dubuwucool.baidumapdemo
注意:用上一步的软件或清单文件都可以获取包名,但从gradle文件中获取更为稳妥
具体创建过程如下
完成后获得key值 a5dkzXGjAlMhVBzaDxxe4w6o0I4hMzYh
验证key是否能用
二丶下载sdk并进行相关配置
选择所需功能并下载
下载完成后解压,并将libs文件夹下的所有文件粘贴到程序下的libs文件夹
完成后在gradle文件进行修改
完成后点击右上角的同步,框架中出现jniLibs文件夹并且代码中有提示则导入成功
三丶创建MyApplication类
/**
* function:
因为
sdk
各功能组件使用之前需要调用
SDKInitializer.initialize(
上线文
)
*
所以把该方法放在
Application
的初始化方法中
,
新建一个类继承
Application
*
并在清单文件进行配置
android:name=".MyApplication"
*
之后覆写
onCreate
方法
,
进行初始化
*/
public class MyApplication
extends Application {
@Override
public void onCreate() {
super.onCreate();
//
注册一个
key
验证是否是正确的广播所有者
,
我们在开发时经常有一些验证
,
比如验证网络等
//
创建一个
BroadcastReceiver
的内部类
BroadcastReceiver broadcastReceiver =
new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//
得到系统传过来的
String
值
String s = intent.getAction();
//
创建空的字符串
String msg =
null;
//
判断字符串是否相同
if (s.equals(SDKInitializer.
SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_OK)) {
msg =
"
验证
key
成功
";
}
else if (s.equals(SDKInitializer.
SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR)) {
msg =
"
验证
key
失败
";
}
else if (s.equals(SDKInitializer.
SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR)) {
msg =
"
网络连接失败
";
}
Toast.
makeText(MyApplication.
this, msg, Toast.
LENGTH_SHORT).show();
}
};
//
代码进行广播注册
,
也可在清单文件中注册
IntentFilter filter =
new IntentFilter();
//
添加过滤条件
filter.addAction(SDKInitializer.
SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR);
filter.addAction(SDKInitializer.
SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR);
filter.addAction(SDKInitializer.
SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_OK);
//
进行广播注册
registerReceiver(broadcastReceiver,filter);
//初始化百度地图
SDKInitializer.
initialize(getApplicationContext());
}
}
四丶修改清单文件
1.添加权限
2.配置MyApplication
3. 百度地图用到的Values值
xml version=
"1.0"
encoding=
"utf-8"
?>
<
manifest
xmlns:
android
=
"http://schemas.android.com/apk/res/android"
package=
"com.dubuwucool.baidumapdemo">
<
uses-permission
android
:name=
"com.android.launcher.permission.READ_SETTINGS" />
<
uses-permission
android
:name=
"android.permission.ACCESS_COARSE_LOCATION" />
<
uses-permission
android
:name=
"android.permission.ACCESS_FINE_LOCATION" />
<
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" />
<
application
android
:allowBackup=
"true"
android
:icon=
"@mipmap/ic_launcher"
android
:label=
"@string/app_name"
android
:supportsRtl=
"true"
android
:theme=
"@style/AppTheme"
android:name=".MyApplication">
<
meta-data
android
:name=
"com.baidu.lbsapi.API_KEY"
android:value="a5dkzXGjAlMhVBzaDxxe4w6o0I4hMzYh
" />
<
activity
android
:name=
".MainActivity">
<
intent-filter>
<
action
android
:name=
"android.intent.action.MAIN"/>
<
category
android
:name=
"android.intent.category.LAUNCHER"/>
intent-filter>
activity>
application>
manifest>
五丶主窗体布局及代码
xml version=
"1.0"
encoding=
"utf-8"
?>
<
RelativeLayout
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"
tools
:context=
"com.dubuwucool.baidumapdemo.MainActivity">
<
com.baidu.mapapi.map.MapView
android
:id=
"@+id/mapView"
android
:layout_width=
"match_parent"
android
:layout_height=
"match_parent">
com.baidu.mapapi.map.MapView>
RelativeLayout>
主窗体代码
public class MainActivity
extends AppCompatActivity {
private MapView
mapView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.
activity_main);
initView();
//
设置是否显示比例尺
mapView.showScaleControl(
false);
//
设置是否显示缩放按钮
mapView.showZoomControls(
true);
}
private void initView() {
mapView = (MapView) findViewById(R.id.
mapView);
}
}