• Android 百度地图 SDK v3.0.0 (一)


    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37729091

    近期公司要把百度地图集成的项目中,于是我就研究了一天百度地图的SDK,当前的版本号:Android SDK v3.0.0 。

    尽管百度地图网上相关代码比較多。大多可能都是比較旧的版本号,且百度地图API的修改感觉也比較大。所以再此跟大家分享一下一天的劳动成功。

    以下简单展示下,博客中会介绍的功能:

    1、功能介绍

    a、首先肯定是导入地图,然后就是地图模式的一些切换,普通。卫星,实时交通什么的。

    b、定位功能,定位当前位置。

    效果图:


    c、动态加入覆盖物,点击覆盖物,弹出层以及其它效果。

    效果图:



    d、结合方向传感器,为地图的定位功能加入方向,本人极其路痴,不分东南西北。所以此功能对我来说非常重要,手机不断旋转,我才干知道当前应该走哪条路。直接显示的地图对我来说没用。

    效果图(我360度的旋转手机,观察效果图的变化):



    切换到别的模式也是非常炫的:


    e、提供离线地图下载,能够极大的省去用户的流量,也能保证在无网络情况对地图的使用。

    基本这上述的功能。第一篇。还是从零開始。先把百度地图导入app再说。

    2、申请密钥

    a、申请密钥,到百度API控制台的页面:http://lbsyun.baidu.com/apiconsole/key


    输入要应用名称,选择应用类型,输入安全吗。

    b、关于安全码 ( 数字签名;包名 ) 的获取:

    打开IDE:

    黑框框住的就是数字签名,然后包名就是咱们应用的包名。直接用分号连接:比如:F5:10:39:D9:81:57:BD:2E:A0:CD:E3:EB:5E:C4:CC:E0:E0:0D:41:56;com.zhy.zhy_baidu_ditu_demo03

    最后点击完毕。就能获取密钥了:



    3、第一个baidu map应用

    下载就不多说了,直接点击官网的相关下载即可选择就可,后面我也会贴上源代码。

    配置:

    第一步:在project里新建libs文件夹,将开发包里的baidumapapi_vX_X_X.jar复制到libs根文件夹下,将libBaiduMapSDK_vX_X_X.so复制到libsarmeabi文件夹下(官网demo里已有这两个文件,假设要集成到自己的project里。就须要自己加入)。拷贝完毕后的project文件夹例如以下图所看到的;

    注:liblocSDK3.so和locSDK_3.1.jar为百度定位SDK所使用资源,开发人员可依据实际需求自行加入。


    android_dev1.png
    第二步:在project属性->Java Build Path->Libraries中选择“Add External JARs”,选定baidumapapi_vX_X_X.jar,确定后返回。


    通过以上两步操作后,您就能够正常使用百度地图SDK为您提供的所有功能了。


    注意:因为adt插件升级。若您使用Eclipse adt 22的话。须要对开发环境进行对应的设置。方法例如以下:
    1). 在Eclipse 中选中project,右键选 Properties->Java Build Path->Order and Export 使 Android Private Libraries处于勾选状态;
    2). Project -> clean-> clean all .


    a、在application中加入开发密钥

    <application 
    <meta-data 
    android:name="com.baidu.lbsapi.API_KEY" 
    android:value="开发人员 key" /> 
    </application>


    b、加入所需权限

    <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
    <uses-permission android:name="android.permission.USE_CREDENTIALS" /> 
    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" /> 
    <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /> 
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_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.BROADCAST_STICKY" /> 
    <uses-permission android:name="android.permission.WRITE_SETTINGS" /> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />


    c、布局文件里加入地图控件


    <com.baidu.mapapi.map.MapView
    android:id="@+id/id_bmapView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:clickable="true" />


    d、在应用程序创建时初始化 SDK引用的Context 全局变量:

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState);
    
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    // 在使用SDK各组件之前初始化context信息,传入ApplicationContext
    // 注意该方法要再setContentView方法之前实现
    SDKInitializer.initialize(getApplicationContext());
    setContentView(R.layout.activity_main);
    }


    好了,经过这四步就能显示地图了~~

    e、只是地图非常耗电。所以有必要管理其声明周期

    package com.zhy.zhy_baidu_ditu_demo00;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.Window;
    
    import com.baidu.mapapi.SDKInitializer;
    import com.baidu.mapapi.map.MapView;
    
    public class MainActivity extends Activity
    {
    	private MapView mMapView = null;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState)
    	{
    		super.onCreate(savedInstanceState);
    
    		requestWindowFeature(Window.FEATURE_NO_TITLE);
    		// 在使用SDK各组件之前初始化context信息,传入ApplicationContext
    		// 注意该方法要再setContentView方法之前实现
    		SDKInitializer.initialize(getApplicationContext());
    		setContentView(R.layout.activity_main);
    		// 获取地图控件引用
    		mMapView = (MapView) findViewById(R.id.id_bmapView);
    	}
    
    	@Override
    	protected void onDestroy()
    	{
    		super.onDestroy();
    		// 在activity运行onDestroy时运行mMapView.onDestroy()。实现地图生命周期管理
    		mMapView.onDestroy();
    		mMapView = null;
    	}
    
    	@Override
    	protected void onResume()
    	{
    		super.onResume();
    		// 在activity运行onResume时运行mMapView. onResume (),实现地图生命周期管理
    		mMapView.onResume();
    	}
    
    	@Override
    	protected void onPause()
    	{
    		super.onPause();
    		// 在activity运行onPause时运行mMapView. onPause (),实现地图生命周期管理
    		mMapView.onPause();
    	}
    
    }
    


    好了,完毕。事实上百度开发指南上对了helloworld这篇也极其清楚~~~~



    源代码点击下载


    百度地图相关博客视频版本号已经上线:Android中百度地图的使用期待您的支持。



    博主部分视频已经上线,假设你不喜欢枯燥的文本,请猛戳(初录,期待您的支持):

    1、Android 自己定义控件实战 电商活动中的刮刮卡

    2、Android自己定义控件实战  打造Android流式布局和热门标签

    3、Android智能机器人“小慕”的实现

    4、高仿QQ5.0側滑

    5、高仿微信5.2.1主界面及消息提醒






  • 相关阅读:
    spring-boot-starter-actuator /info获取空信息
    我们每天都在做无用功?
    Net和Java基于zipkin的全链路追踪
    各大厂分布式链路跟踪系统架构对比
    淘宝npm镜像使用方法(转)
    你离架构师还有多远?
    该怎么向别人介绍你们的系统架构?
    java中用MessageFormat格式化json字符串用占位符时出现的问题can't parse argument number
    你必须要了解的大数据潮流下的机器学习及应用场景
    突破GitHub单个文件最大100M的限制 LFS
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/6940335.html
Copyright © 2020-2023  润新知