做交易网站需要用到的软件有哪些,如何做多语言网站,地方网站源码,企业宣传网Android集成百度地图 文章目录 Android集成百度地图前言准备工作创建工程申请密钥 在项目中集成BaiduMap SDK创建地图 前言
本案例使用百度地图实现在Android中集成地图#xff0c;并且实现了普通地图/卫星地图#xff0c;以及路况图和热状图功能#xff1b; 参考技术文档并且实现了普通地图/卫星地图以及路况图和热状图功能 参考技术文档Android 地图SDK 软件环境 准备工作
创建工程 注新创建的项目的 Name 和 Package name比较重要后面会使用到 在正式开始之前给大家看看初始化项目的结构
申请密钥
控制台-我的管理/我的应用-创建应用这里我已经创建过了大家忽略即可 点击创建应用即可跳转到如下界面
应用类型选择Android SDK应用名称大家可以根据自己的需求添加名称
页面接续向下滑动出现了如下界面 这里必填项就是发布版SHA1和PackageName这两个都比较容易获取首先最容易获取的就是包名了
打开刚刚新建的项目工程然后打开app结构下的build.gradle即可查看PackageName了 接下来就是填写SHA1了我使用的操作系统是macOS 官方操作手册注册和获取密钥 对于Mac用户 打开终端进入 .android目录 cd .android打开 debug.keystore keytool -list -v -keystore debug.keystore输入密码 系统默认的密码是android输入完后直接回车最后就可以在终端上面看见SHA1密钥了 在终端中即可查看SHA1了并将其赋值粘贴即可最后点击确定即可生成新的AK密钥了 最后点击提交后在控制台中置顶的应用为新建应用
在项目中集成BaiduMap SDK
百度地图官方提供了两种SDK集成方式分别为
下载 SDK 本地依赖本次采用方法通过 Gradle 集成 SDK 下载开发包 这里选择 全量定位基础地图含室内图选择的配置选择jar包即可点击开发包即可下载 示例代码类参考大家自行下载里面有文档可以查看 将开发包拷贝至工程app/libs目录下 添加jar文件 在libs目录下选中每一个jar文件此处只有一个BaiduLbs_Android.jar右键选择Add As Library…此时会发现在app目录的build.gradle的dependencies块中生成了工程所依赖的jar文件的对应说明此图略 添加so文件 在src/main/目录下新建jniLibs目录如果您的项目中已经包含该目录不用重复创建在下载的开发包中拷贝项目中需要的CPU架构对应的so文件文件夹到jniLibs目录如图
至此已完成通过本地依赖集成SDK。 创建地图
百度地图SDK为开发者提供了便捷的使用百度地图能力的接口通过以下几步操作即可在您的应用中使用百度地图 第一步 配置AndroidManifest.xml文件 在application中加入如下代码配置开发密钥AK application meta-data android:namecom.baidu.lbsapi.API_KEY android:valueAK /
/application这里的AK密钥在我们创建的应用部分即可查看 在application外部添加如下权限声明 !-- 访问网络进行地图相关业务数据请求包括地图数据路线规划POI检索等 --
uses-permission android:nameandroid.permission.INTERNET /
!-- 获取网络状态根据网络状态切换进行数据请求网络转换 --
uses-permission android:nameandroid.permission.ACCESS_NETWORK_STATE /!-- 读取外置存储。如果开发者使用了so动态加载功能并且把so文件放在了外置存储区域则需要申请该权限否则不需要 --
uses-permission android:nameandroid.permission.READ_EXTERNAL_STORAGE /
!-- 写外置存储。如果开发者使用了离线地图并且数据写在外置存储区域则需要申请该权限 --
uses-permission android:nameandroid.permission.WRITE_EXTERNAL_STORAGE / 在布局文件中添加地图容器 MapView是View的一个子类用于在Android View中放置地图。MapView的使用方法与Android提供的其他View一样。 com.baidu.mapapi.map.MapView android:idid/bmapView android:layout_widthmatch_parent android:layout_heightmatch_parent android:clickabletrue /地图初始化 新建一个自定义的Application在其onCreate方法中完成SDK的初始化。示例代码如下 public class DemoApplication extends Application {Overridepublic void onCreate() {super.onCreate();//在使用SDK各组件之前初始化context信息传入ApplicationContextSDKInitializer.setAgreePrivacy(this,true); //自Android6.0起部分权限的使用需要开发者在代码中动态申请SDKInitializer.initialize(this);//自4.3.0起百度地图SDK所有接口均支持百度坐标和国测局坐标用此方法设置您使用的坐标类型.//包括BD09LL和GCJ02两种坐标默认是BD09LL坐标。SDKInitializer.setCoordType(CoordType.BD09LL);}
}在AndroidManifest.xml文件中声明该Application 创建地图Activity管理MapView生命周期 public class MainActivity extends Activity { 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(); }
}完成以上工作即可在您的应用中显示地图 如果使用的AVD模拟器启动项目的话项目会出现如下错误 如果出现了E/AndroidRuntime: FATAL EXCEPTION: GLThread这个问题说明项目运行“成功”了这是因为定位不能用模拟器你安装到手机上才行换个夜神模拟器或者雷电模拟器试试说不准就好了 下图是真机测试结果默认是普通地图
除了这些平时常见的还有卫星地图热力图路况图等接下来实现这些功能
修改string.xml文件
resourcesstring nameapp_nameBaiduMap/stringstring namenormal_map普通地图/stringstring namesatellite_map卫星地图/stringstring nametrafficEnable开启路况图/stringstring nameheatMapEnable开启热力图/string
/resources设置背景颜色gradient_color.xml
?xml version1.0 encodingutf-8?
shape xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:shaperectanglegradientandroid:angle0android:startColor#FF00AFFFandroid:endColor#FF379EB6android:typelinear/
/shape接下来修改activity_main.xml文件
?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticaltools:context.MainActivityLinearLayoutandroid:layout_widthmatch_parentandroid:layout_height50dpandroid:backgrounddrawable/gradient_colorandroid:orientationhorizontalRadioGroupandroid:idid/rg_typeandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:orientationhorizontalRadioButtonandroid:idid/rb_normalandroid:layout_width0dpandroid:layout_heightwrap_contentandroid:layout_weight1android:textstring/normal_map /RadioButtonandroid:idid/rb_satelliteandroid:layout_width0dpandroid:layout_heightwrap_contentandroid:layout_weight1android:textstring/satellite_map //RadioGroup/LinearLayoutLinearLayoutandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:backgrounddrawable/gradient_colorCheckBoxandroid:idid/cb_trafficEnableandroid:layout_width0dpandroid:layout_heightwrap_contentandroid:layout_weight1android:textstring/trafficEnable /CheckBoxandroid:idid/cb_heatMapEnableandroid:layout_width0dpandroid:layout_heightwrap_contentandroid:layout_weight1android:textstring/heatMapEnable //LinearLayoutcom.baidu.mapapi.map.MapViewandroid:idid/bmapViewandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:clickabletrueandroid:focusabletrue //LinearLayout最后修改MainActivity.java文件即可
package com.weicomp.baidumap;import android.app.Activity;
import android.os.Bundle;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.RadioButton;
import android.widget.RadioGroup;import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.MapView;public class MainActivity extends Activity {private MapView mMapView null;private RadioGroup mRgType;private RadioButton mRbNormal, mRbSatellite;private CheckBox mCbtTrafficEnable, mCbHeatMapEnable;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//获取地图控件引用mMapView (MapView) findViewById(R.id.bmapView);mRgType findViewById(R.id.rg_type);mRbNormal findViewById(R.id.rb_normal);mRbSatellite findViewById(R.id.rb_satellite);mCbtTrafficEnable findViewById(R.id.cb_trafficEnable);mCbHeatMapEnable findViewById(R.id.cb_heatMapEnable);initEvent();}private void initEvent() {mRgType.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {Overridepublic void onCheckedChanged(RadioGroup radioGroup, int i) {if (i mRbNormal.getId()) {mMapView.getMap().setMapType(BaiduMap.MAP_TYPE_NORMAL);} else if (i mRbSatellite.getId()) {mMapView.getMap().setMapType(BaiduMap.MAP_TYPE_SATELLITE);}}});mCbtTrafficEnable.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {Overridepublic void onCheckedChanged(CompoundButton compoundButton, boolean b) {mMapView.getMap().setTrafficEnabled(b);}});mCbHeatMapEnable.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {Overridepublic void onCheckedChanged(CompoundButton compoundButton, boolean b) {mMapView.getMap().setBaiduHeatMapEnabled(b);}});}Overrideprotected void onResume() {super.onResume();//在activity执行onResume时执行mMapView. onResume ()实现地图生命周期管理mMapView.onResume();}Overrideprotected void onPause() {super.onPause();//在activity执行onPause时执行mMapView. onPause ()实现地图生命周期管理mMapView.onPause();}Overrideprotected void onDestroy() {super.onDestroy();//在activity执行onDestroy时执行mMapView.onDestroy()实现地图生命周期管理mMapView.onDestroy();}
}最后在真机测试一边测试结果如下所示 后面会陆续实现定位等功能