基于Fragment的百度地图框架的使用
博客:http://blog.csdn.net/developer_jiangqq
(一)基本介绍(Fragment和SupportMapFragment):
Fragment的使用现在安卓APP开发中用的比较多了,Fragment名称为碎片和Activity有着相似的生命管理周期,基本作用可以进行开发兼容手机和平板的app,较少兼容分辨率版本的工作量,提高工作效率。其中Fragment还是可以包含控制代码的视图模块,可以非常方便的进行组合。使用起来很方便。具体有个Fragment的介绍和使用请点击查看(官网Fragment的介绍和基本使用),这边就不多讲了。下面我们来看下百度地图API给我们提供的地图框架SupportMapFragment。SupportMapFragment是继承于Fragment因此具备Fragment的完成的生命周期,该框架主要用来管理地图生命周期,主要有下面两个方法1:getMapView():获取MapView引用,要在onCreateView函数调用之后进行使用.2:newInstance();返回获取SupportMapFragment对象实例。
(二)使用方法:
使用方法和我们平时用Fragment的时候差不多,首先获取SupportMapFragment实例,然后把该Fragment添加到指定View视图图.commit一下即可.
(三)代码演示,注释基本已经写了挺详细了,直接看就OK了
1.自定义MyApplication.java设置全局变量,并且进行校验密钥:
package com.ztt.baidumap.ui;import android.app.Application; import android.content.Context; import android.util.Log; import android.widget.Toast;import com.baidu.mapapi.BMapManager; import com.baidu.mapapi.MKGeneralListener; import com.baidu.mapapi.map.MKEvent; /*** 自定义Application,进行key识别验证 (使用单例)* @author Jiangqq* @time 2014/03/15 10:14*/ public class MyApplication extends Application {public static MyApplication instance=null;BMapManager mBMapManager = null;public boolean m_bKeyRight = true;public static final String strKey = "vUAGbPwLpolIqiwWisnQPeIE"; //百度地图官网申请的密钥public static MyApplication getInstance(){return instance;}@Overridepublic void onCreate() {super.onCreate();instance=this;//在APP应用启动的时候,进行初始化验证initEngineManager(this);}/*** 进行验证key* @param pContext*/private void initEngineManager(Context pContext){if (mBMapManager == null) {mBMapManager = new BMapManager(pContext);}if (!mBMapManager.init(strKey,new MyGeneralListener())) {Toast.makeText(MyApplication.getInstance(), "BMapManager 初始化错误!", Toast.LENGTH_LONG).show();}}// 常用事件监听,用来处理通常的网络错误,授权验证错误等static class MyGeneralListener implements MKGeneralListener {@Overridepublic void onGetNetworkState(int iError) {if (iError == MKEvent.ERROR_NETWORK_CONNECT) {Toast.makeText(MyApplication.getInstance(), "您的网络出错啦!",Toast.LENGTH_LONG).show();}else if (iError == MKEvent.ERROR_NETWORK_DATA) {Toast.makeText(MyApplication.getInstance(), "输入正确的检索条件!",Toast.LENGTH_LONG).show();}else {Log.d("zttjiangqq", "iError="+iError);}// ... }@Overridepublic void onGetPermissionState(int iError) {//非零值表示key验证未通过if (iError != 0) {//授权Key错误: Toast.makeText(MyApplication.getInstance(), "请在 DemoApplication.java文件输入正确的授权Key,并检查您的网络连接是否正常!error: "+iError, Toast.LENGTH_LONG).show();MyApplication.getInstance().m_bKeyRight = false;}else{MyApplication.getInstance().m_bKeyRight = true;Toast.makeText(MyApplication.getInstance(), "key认证成功", Toast.LENGTH_LONG).show();}}} }
2:创建一个FragmentMapDemo.java,继承于FragmentActivity,使用newInstance()方法获取SupportMapFragment,进行显示地图:
package com.ztt.baidumap.ui;import android.content.res.Configuration; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.util.Log;import com.baidu.mapapi.BMapManager; import com.baidu.mapapi.map.MapController; import com.baidu.mapapi.map.SupportMapFragment; import com.baidu.platform.comapi.basestruct.GeoPoint;public class FragmentMapDemo extends FragmentActivity {SupportMapFragment map;@Overridepublic void onCreate(Bundle arg0) {/*** 使用地图sdk前需先初始化BMapManager.* BMapManager是全局的,可为多个MapView共用,它需要地图模块创建前创建,* 并在地图地图模块销毁后销毁,只要还有地图模块在使用,BMapManager就不应该销毁*/MyApplication app = (MyApplication)this.getApplication();if (app.mBMapManager == null) {app.mBMapManager = new BMapManager(getApplicationContext());/*** 如果BMapManager没有初始化则初始化BMapManager*/app.mBMapManager.init(MyApplication.strKey,new MyApplication.MyGeneralListener());}Log.d("zttjiangqq", "onCreate");setContentView(R.layout.activity_fragment);map = SupportMapFragment.newInstance();FragmentManager manager = getSupportFragmentManager();FragmentTransaction ft= manager.beginTransaction();ft.add(R.id.map, map, "map_fragment");ft.commit();}@Overrideprotected void onRestoreInstanceState(Bundle savedInstanceState) {super.onRestoreInstanceState(savedInstanceState);Log.d("zttjiangqq", "onRestoreInstanceState");}@Overrideprotected void onRestart() {super.onRestart();Log.d("zttjiangqq", "onRestart");}@Overridepublic void onStart() {super.onStart();Log.d("zttjiangqq", "onStart");}@Overridepublic void onResume() {super.onResume();Log.d("zttjiangqq", "onResume");// 得到MapView的控制权,可以用它控制和驱动平移和缩放 MapController controller = map.getMapView().getController();// 用给定的经纬度构造一个GeoPoint,单位是微度 (度 * 1E6) 并且设置设置地图中心点 (这边使用天安门)controller.setCenter(new GeoPoint((int)(39.945 * 1E6), (int)(116.404 * 1E6)));// 设置地图zoom级别 controller.setZoom(13);}@Overridepublic void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);Log.d("zttjiangqq", "onSaveInstanceState");}@Overridepublic void onPause() {super.onPause();Log.d("zttjiangqq", "onPause");}@Overridepublic void onStop() {super.onStop();Log.d("zttjiangqq", "onStop");}@Overridepublic void onDestroy() {super.onDestroy();Log.d("zttjiangqq", "onDestory");}@Overridepublic void onConfigurationChanged(Configuration newConfig) {super.onConfigurationChanged(newConfig);Log.d("zttjiangqq", "onConfigurationChanged");} }
3:布局文件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><FrameLayoutandroid:id="@+id/map"android:layout_width="match_parent"android:layout_height="match_parent" /></LinearLayout>
(三)注意一定要添加配置权限
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /><uses-permission android:name="android.permission.BAIDU_LOCATION_SERVICE" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCES_MOCK_LOCATION" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /><uses-permission android:name="android.permission.WAKE_LOCK" /><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_GPS" /><!-- SDK1.5需要android.permission.GET_TASKS权限判断本程序是否为当前运行的应用? --><uses-permission android:name="android.permission.GET_TASKS" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.BROADCAST_STICKY" /><uses-permission android:name="android.permission.WRITE_SETTINGS" /><!-- 来电消音 --><uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /><uses-permission android:name="android.permission.RECORD_AUDIO" />
基于Fragment的百度地图框架的使用相关推荐
- 基于Echarts和百度地图的HTML插件
基于Echarts和百度地图的HTML插件 代码实现了最基本的显示地图功能,另外实现了坐标标识,点击出现弹出框以及地点的经纬度等. 地图样式可以使用json配置 源码以及需要使用的js文件(bmap. ...
- android百度地图调用animateto 会报空指针异常,基于Android的百度地图应系统毕业设计.docx...
基于Android的百度地图应系统毕业设计 分类号: 学校代码:11460 学 号南京晓庄学院本科生毕业设计 基于Android平台和百度地图的应用系统 Application system base ...
- echarts地图文字重叠解决方案_基于Echarts的百度地图叠加arcgis server的WMS图层服务...
前言 前阵子利用echarts+百度地图做系统的门户首页,遇到一个要地图上叠加产业城影响范围示意图的需求.查阅文档之后,发现百度地图API确实提供了叠加自定义图层的方法,详情请看: 百度地图API的M ...
- 基于android的百度地图_百度的71个炸天的开源项目
本文为大家整理了百度开源的70+项目,看看有没有感兴趣的. 1.JavaScript图表库 ECharts ECharts开源来自百度商业前端数据可视化团队,基于html5 Canvas,是一个纯Ja ...
- 基于uni-app与百度地图API实现简易前后端分离的地理围栏应用
一.引言 地理围栏(Geo-fencing)是LBS 的一种新应用,就是用一个虚拟的栅栏围出一个虚拟地理边界.当手机进入.离开某个特定地理区域,或在该区域内活动时,后台可以感知到这一变化,同时手机可以 ...
- 基于android的百度地图的公司员工签到app
本论文首先阐述了基于百度地图的员工考勤和分析系统的开发背景和设计目标,并对开发基于百度地图的员工考勤和分析系统所采用的相关技术进行了详细的介绍,然后对此应用软件进行了需求分析,以及系统的设计与实现,最 ...
- 基于Android的百度地图开发
参考资料: android studio获得SHA1的值,然后在百度地图移动版API官网申请key Android Studio怎么查看程序的安全码获取SHA1值? http://www.codese ...
- 基于Android的百度地图定位开发
百度地图定位 一.注册和获取密钥 1.获取SHA1 2.获取包名 二.AS配置 三.显示地图开发 1.添加地图权限 2.添加地图容器 3.地图初始化 4.创建地图Activity,管理MapView生 ...
- 基于android的百度地图的工程车辆租赁服务平台设计
智能手机的飞速发展是信息时代的一个重要标志,人们可以在智能手机上办公.交友.购物.教学等.智能手机的发展带给人们更多的是便利.高效的生活方式.工程车辆租赁管理也提升了一个档次,渐渐实现了无纸化办公,从 ...
最新文章
- Ajax--readyState一直为0
- 神经网络隐藏层节点数效率最优值
- 求两个不超过200位的非负整数积_必看:初一上册数学考试概念、定义全部公式总结!(两个版本)...
- php多维求组按照健值排序,PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】...
- 落魄前端,整理给自己的前端知识体系复习大纲(下篇)
- Linux命令Man解释:useradd:帐号建立或更新
- css框架之 ---- SASS
- java学生管理系统遇到的难题_学生信息管理系统错误总结
- 层次分析法java_AHP层次分析法java实现
- php如何计算天数,php计算日期相差天数二种方法
- 《网络是这样连接的》读书笔记2
- 【2022 CCPC 华为云计算挑战赛】1005 带权子集和 (NTT 优化dp)
- Linux树莓派实战案例论文,树莓派|树莓派使用实例之:2 Pi R
- 基于JAVA工作流流程编辑OA系统计算机毕业设计源码+数据库+lw文档+系统+部署
- Mac Xcode opencv C++环境配置 保姆级教程 填坑记录 19年最新版本
- AES种子秘钥构造一个完整的秘钥编排方案
- Easyrecovery 专业的手机数据恢复软件
- 柯桥小学教师资格证考试:班级突发情况处理
- 《计算机网络-谢希仁》读书笔记---概述
- Golff Lend 借贷重磅上线
热门文章
- 华硕服务器主板型号命名规则,常见主板命名规则
- 全志android启动串口无打印,CSK.Blog-给MK802(USB大小的Android4.0小PC)引出串口信号,变成ARM开发版...
- php mysql购物车实现原理_PHP实现购物车的思路和源码分析
- c语言中的所有关键字,C语言中的32个关键字
- lua jit java jit_Lua JIT 2.0 发布了,一百五十倍的性能提升!
- java创建型_Java创建型模式
- python位运算符_详细介绍Python语言中的按位运算符
- android将拍摄的图片存入sd卡中,Android将图片保存至SD卡上
- html 手机分辨率,移动端各种分辨率手机屏幕----适配方法集锦
- 求10 翻译c语言,求助:谁能帮我翻译下最基础的C语言,我是新手,谢谢了!