现在在许多的app都加入了百度地图的功能,现在简单阐述以下怎样生成一个简单的地图,之后会说到地图的定位以及搜索
首先我们如果想生成百度地图第一步就是我们要创建一个应用申请秘钥,我的地址:http://lbsyun.baidu.com/apiconsole/key
点击创建应用,输入一个应用名,应用类型为AndroidSDK 其他的就不多说了 主要我们需要的就是个发布版SHA1,以及应该注意包名必须与项目的包名一致。
下来说怎样得到 发布版SHA1 :
进入AndroidStudio工程里面点击上部的Bulide 里面有个Generate Signed APK 在里面重新Create new 一个新的jks
简单的说一下:最上方是jks创建的路径点击右边的按钮可以原则路径以及填写名称,接着往下走是密码以及确定密码 Alias直接习惯的写China好像是别名的意思,下边就不详细说明了。
创建成功后,进入黑窗口,用 cd 找到创建好的jks使用keytool -list -v -keystore+jks的名称点击回车
出现下面这幅图就成功了之后复制这个SHA1到创建的应用里面就可以生成秘钥了。
接下来就是清单文件里用到的权限以及设置
<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.WRITE_SETTINGS" />
<!-- SD卡读取权限,用户写入离线定位数据-->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
当然这里面是有可以定位的权限可以留着
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="密钥的名称" />
bulid里面必须配置
//必须添加--
sourceSets {
main {
jniLibs.srcDir 'libs'
}
}
导入工程的jar包
最后一个包是定位用的也可先不导入
前面这些工作做好后需要真正的代码了
首先布局:
<com.baidu.mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" />
直接用就可以,这是地图自带的一个MapView
代码
package com.example.maptest;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.MapView;
public class BaseMapActivity extends AppCompatActivity {
MapView mMapView = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//在使用SDK各组件之前初始化context信息,传入ApplicationContext
//进行初始化
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_base_map);
//获取地图控件引用
mMapView = (MapView) findViewById(R.id.bmapView);
}
@Override
protected void onDestroy() {
super.onDestroy();
//在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
mMapView.onDestroy();
}
@Override
protected void onResume() {
super.onResume();
//在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
//在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
mMapView.onPause();
}
}
直接使用就行了。基础地图就形成了。