基于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" />

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/544312.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nacos服务注册与发现的2种实现方法!

作者 | 磊哥来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;Spring Cloud Alibaba 技术体系中的 Nacos&#xff0c;提供了两个重要的功能&#xff1a;注册中心&#xff08;服务注册与发…

java settime_Java日历setTime()方法及示例

java settime日历类setTime()方法 (Calendar Class setTime() method) setTime() method is available in java.util package. setTime()方法在java.util包中可用。 setTime() method is used to sets time with the specified Date(d) of this Calendar. setTime()方法用于使用…

面试必备:Spring 面试 63 问!

作者 | 夏目blog.csdn.net/wuzhiwei549/article/details/122324261Sping原理Spring是一个轻量级Java开发框架&#xff0c;最早有Rod Johnson创建&#xff0c;目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的JavaSE/JavaEE full-stack&#xff0…

javafor循环打印图案_C程序使用循环打印盒子图案

javafor循环打印图案Input a number and print the following box pattern in C language, 输入数字并以C语言打印以下框形 &#xff0c; 4 4 4 4 4 4 44 3 3 3 3 3 4 4 3 2 2 2 3 4 4 3 2 1 2 3 4 4 3 2 2 2 3 4 4 3 3 3 3 3 4 4 4 4 4 4 4 4 Input format: 输入…

懒人专用SSH框架下的基本配置

项目结束&#xff0c;马上就要出去找工作了&#xff0c;这段时间也不用写项目&#xff0c;就整理了一些以后可能会用的到的配置&#xff0c;还有一个原因就是我不想去记忆。。。。。。。。。SSH下application.xml的基本配置&#xff0c;应该满足一般的开发需求<?xml versio…

为什么HashMap会产生死循环?

作者&#xff1a;磊哥来源 | Java面试真题解析&#xff08;ID&#xff1a;aimianshi666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;面试合集&#xff1a;https://gitee.com/mydb/interviewHashMap 死循环是一个比较常见、比较经典的问题&am…

iOS的自动化测试

2019独角兽企业重金招聘Python工程师标准>>> iOS的自动化测试:http://www.360doc.com/content/13/1225/22/1912775_340124906.shtml 转载于:https://my.oschina.net/CeShiXiaoSongShu/blog/496660

为什么阿里全面推动 K8S 落地,咬紧牙关也要搞云原生?

身为让容器应用实现大规模工业生产的一大功臣&#xff0c;过去几年&#xff0c;Kubernetes 势头迅猛&#xff0c;BAT、京东、美团、字节都走上了全域容器化部署以及云原生架构的康庄大道。而作为支撑阿里万亿级应用背后的核心&#xff0c;阿里云早在2016年就顺势搭上容器化这趟…

python字符串find_Python字符串| 带示例的find()方法

python字符串findString.find()方法 (String.find() Method) find() is an inbuilt method of python, it is used to check whether a sub-string exists in the string or not. If sub-string exists, the method returns the lowest index of the sub-string, if sub-string…

.sdp文件格式介绍

最近做RTSP流播放&#xff0c;需要了解.sdp这种会话描述的文件格式&#xff0c;当然&#xff0c;里面的具体语法有SDP解析器来分析。但是我需要大概了解一些字段的意思&#xff0c;它是文本描述的&#xff0c;采用key value的形式描述。 https://en.wikipedia.org/wiki/Session…

Spring Cloud Alibaba Nacos路由策略之保护阈值!

作者 | 磊哥来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;在 Nacos 的路由策略中有 3 个比较重要的内容&#xff1a;权重、保护阈值和就近访问。因为这 3 个内容都是彼此独立的&#…

lambda python_Python | Lambda和filter()与示例

lambda pythonThe filter() function is used to filter the elements from given iterable collection based on applied function. filter()函数用于根据应用函数从给定的可迭代集合中过滤元素。 Example: 例&#xff1a; Given a list of integers and we have to filter …

浅谈 OneAPM 在 express 项目中的实践

【编者按】OneAPM 运营团队&#xff0c;近日在 github 上发现了一篇文章&#xff0c;特别奉献给大家。本文作者王宇先生从2015年年初就开始使用我们的产品&#xff0c;也是OneAPM 的忠实用户。 OneAPM 是一个优秀的性能监控平台。为什么我们要使用性能监控呢&#xff1f; 并不是…

【万字长文】Spring Cloud Alibaba 开箱即用!

互联网时代&#xff0c;面对复杂业务&#xff0c;讲究 分而治之。将一个大的单体系统拆分为若干个微服务&#xff0c;保证每个系统的职责单一&#xff0c;可以垂直深度扩展。但是一个个独立的微服务像一座座孤岛&#xff0c;如何将他们串联起来&#xff0c;才能发挥最大价值。这…

stl swap函数_C ++ STL | vector :: swap()函数与示例

stl swap函数C STL vector :: swap()函数 (C STL vector::swap() function) vector::swap() function is used to swap/exchange the content of two vectors with the same type, their sizes may differ. vector :: swap()函数用于交换/交换相同类型的两个向量的内容&#x…

HDFS DataNode 设计实现解析

前文分析了 NameNode&#xff0c;本文进一步解析 DataNode 的设计和实现要点。 文件存储 DataNode 正如其名是负责存储文件数据的节点。HDFS 中文件的存储方式是将文件按块&#xff08;block&#xff09;切分&#xff0c;默认一个 block 64MB&#xff08;该大小可配置&#xff…

芭比扣了!Nacos中服务删除不了,肿么办?

作者 | 磊哥来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;前两天遇到了一个问题&#xff0c;Nacos 中的永久服务删除不了&#xff0c;折腾了一番&#xff0c;最后还是顺利解决了。以下…

scala 空列表_如何在Scala中展平列表列表?

scala 空列表Flattening of List is converting a list of multiple List into a single List. To flatten List of List in Scala we will use the flatten method. 扁平化列表是将多个列表的列表转换为单个列表。 为了在Scala中扁平化List列表&#xff0c;我们将使用flatten方…

Spring Cloud OpenFeign夺命连环9问,这谁受得了?

1、前言前面介绍了Spring Cloud 中的灵魂摆渡者Nacos&#xff0c;和它的前辈们相比不仅仅功能强大&#xff0c;而且部署非常简单。今天介绍一款服务调用的组件&#xff1a;OpenFeign&#xff0c;同样是一款超越先辈&#xff08;Ribbon、Feign&#xff09;的狠角色。文章目录如下…

Automation Test in Maya Plugin Development

现状和问题- 开发插件的功能A的时候随手建立场景, 测试插件的功能A. 测试通过后,测试场景就被丢掉.- 发现插件的功能A有bug时, 修改代码, 然后随手建立场景, 测试bug. 测试通过后,测试场景就被丢掉.- 添加功能B, 测试功能B通过后, 在使用的时候发现之前的功能A却产生了bug, 应该…