Android(二)百度地图SDK获取地图信息
使用百度地图SDK,可以查看地图信息,对地图进行放大查看,或者缩小查看一、百度API百度地图API:http://developer.baidu.com/map/二、搭建地图环境1、申请百度地图的key2、下载对应功能的sdk3、新建一个工程导入sdk到lib里面1、申请百度地图key点击 http://lbsyun.baidu.com/apiconso...
使用百度地图SDK,可以查看地图信息,对地图进行放大查看,或者缩小查看
一、百度API
百度地图API:http://developer.baidu.com/map/
二、搭建地图环境
1、申请百度地图的key
2、下载对应功能的sdk
3、新建一个工程导入sdk到lib里面
1、申请百度地图key
点击 http://lbsyun.baidu.com/apiconsole/key
进入key申请页面如下图,然后点击“创建应用”
点击创建应用后,进入如下图,应用名称可以随便写,应用类型选Android SDK
发布版SHA1的获取方法:
(本人Windows环境下)
win+r 输入cmd,打开dos窗口
1、cd jdk的bin目录下 如我的是 cd C:\Program Files\Java\jdk1.8.0_201\bin
2、找到签名文件存放的目录(如果没有生成的,先生成签名文件,我的签名文件是android.jks)所在目录是D:\android.jks
3、输入命令 C:\Program Files\Android\Android Studio\jre\jre\bin\keytool.exe -list -keystore D:\android.jks
输入命令如上图,如果没有设置密码则可以直接点击回车,如果设置密码了那就是key的密码
开发版SHA1的获取方法和发布版SHA1的获取方法的唯一不同的是命令是
三、创建Androidstudio项目
按照http://lbsyun.baidu.com/index.php?title=androidsdk/guide/create-project/androidstudio这里面的步骤来创建一个项目
我的项目目录
1、下载开发包,我是下载了以下几个sdk开发包,根据自己的需求来下载对应的sdk
2、将开发包拷贝至工程(截图以普通地图服务的开发包为例,步骑行导航的开发包同理)
1、添加jar文件
打开解压后的开发包文件夹,找到BaiduLBS_Android.jar文件将其拷贝至工程的app/libs目录下,如图:
2、添加so文件
有两种方法可以往项目中添加so文件。
方法一:
在下载的开发包中拷贝需要的CPU架构对应的so文件文件夹到app/libs目录下,如图:
在app目录下的build.gradle文件中android块中配置sourceSets标签,如果没有使用该标签则新增,详细配置代码如下:
sourceSets {
main {
jniLibs.srcDir 'libs'
}
}
注意:Jar文件和so文件的版本号必须一致,并且保证Jar文件与so文件是同一版本包取出的。
3、往工程中添加jar文件
1、菜单栏选择File -> Project Structure
2、在弹出的Project Structure对话框中选中左侧的Modules列表下的app目录,然后点击右侧页面中的Dependencies选项卡。如图:
3、点击左下角加号“➕”选择Jar dependency,然后选择要添加的jar文件即可(此处为我们拷贝至libs目录下的BaiduLBS_Android.jar) 结果如图:
项目所涉及到的代码‘
activity_main.xml文件的代码
<?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" android:background="@android:color/white" android:orientation="vertical" > <com.baidu.mapapi.map.MapView android:id="@+id/bmapView" android:layout_width="match_parent" android:layout_height="match_parent" android:clickable="true" /> </LinearLayout>
app文件下的build.gradle文件的代码
apply plugin: 'com.android.application' android { compileSdkVersion 28 defaultConfig { applicationId "com.example.wingtech_pc.test1" minSdkVersion 15 targetSdkVersion 28 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } sourceSets { main { jniLibs.srcDir 'libs' } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support.constraint:constraint-layout:1.1.3' 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/BaiduLBS_Android.jar') }
新建一个Java类,DemoApplication
package com.example.wingtech_pc.test1; import android.app.Application; import com.baidu.mapapi.CoordType; import com.baidu.mapapi.SDKInitializer; public class DemoApplication extends Application { @Override public void onCreate() { super.onCreate(); //在使用SDK各组件之前初始化context信息,传入ApplicationContext SDKInitializer.initialize(this); //自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型. //包括BD09LL和GCJ02两种坐标,默认是BD09LL坐标。 SDKInitializer.setCoordType(CoordType.BD09LL); } }
建完了DemoApplication类需要在AndroidManifest.xml文件添加android:name=".DemoApplication"
AndroidManifest.xml文件的代码,加了meta-data标签,指明了key的值,即刚申请到的AK值,还有百度地图相关的权限指定
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.wingtech_pc.test1"> <application 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" android:name=".DemoApplication"> <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="5na2xAAarPEicuy4GEwFGydTLirVrgig" /> </application> <!-- 访问网络,进行地图相关业务数据请求,包括地图数据,路线规划,POI检索等 --> <uses-permission android:name="android.permission.INTERNET" /> <!-- 获取网络状态,根据网络状态切换进行数据请求网络转换 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 读取外置存储。如果开发者使用了so动态加载功能并且把so文件放在了外置存储区域,则需要申请该权限,否则不需要 --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- 写外置存储。如果开发者使用了离线地图,并且数据写在外置存储区域,则需要申请该权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> </manifest>
MainActivity.java的代码:
package com.example.wingtech_pc.test1; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import com.baidu.mapapi.map.MapView; public class MainActivity extends AppCompatActivity { private MapView mMapView = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取地图控件引用 mMapView = (MapView) findViewById(R.id.bmapView); } @Override protected void onResume() { super.onResume(); //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理 mMapView.onResume(); } @Override protected void onPause() { super.onPause(); //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理 mMapView.onPause(); } @Override protected void onDestroy() { super.onDestroy(); //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理 mMapView.onDestroy(); } } 最终运行结果:
本文章参照了百度地图的官方文档和https://blog.csdn.net/qq_26787115/article/details/50358037
更多推荐
所有评论(0)