Android百度地图开发01之初体验

做关于位置或者定位的app的时候免不了使用地图功能,本人最近由于项目的需求需要使用百度地图的一些功能,所以这几天研究了一下,现写一下blog记录一下,欢迎大家评论指正!

一、申请AK(API Key)

    要想使用百度地图sdk,就必须申请一个百度地图的api key。申请流程挺简单的。

    首先注册成为百度的开发者,然后打开http://lbsyun.baidu.com/apiconsole/key这个网址,添加应用:


    创建应用最重要的一步是【安全码】。安全码是有【数字签名】和【;】和【包名】组成。包名就是你所创建的项目的包的结构,是指AndroidManifest.xml中的manifest标签下的package的值。

    数字签名指android的签名证书的SHA1值。

    获取数字签名有两种方法:

    1. 第一种方法:使用eclipse查看。

    打开eclipse的preferences菜单,在Android下的【Build】中可以看到SHA1的值,如下图:


    2. 第二种方法:使用keytool工具(jdk自带)查看。

    在控制台下,输入【cd .android】,然后输入【keytool -list -v -keystore debug.keystore】回车,然后提示你输入【秘钥库口令】,输入【android】回车然后就会显示SHA1的值。



数字签名搞定了,然后创建应用就ok了。创建完成之后,应用列表中会显示相应的AK,也就是api key。

二、下载SDK开发包

 

    打开http://developer.baidu.com/map/index.php?title=androidsdk/sdkandev-download网址下载sdk,可以全部下载,也可以自定义下载。从V2.3.0之后的版本,SDK的开发包以可定制的形式提供下载,用户可以根据自己的项目需要勾选相应的功能下载对应的SDK开发包。

三、在android项目中引用百度SDK

    1. 将开发包中的jar包和so文件添加到libs文件下。



    2. 在AndroidManifest.xml中添加开发秘钥和所需权限。

 

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. <application  
  2.         android:allowBackup="true"  
  3.         android:icon="@drawable/ic_launcher"  
  4.         android:label="@string/app_name"  
  5.         android:theme="@style/AppTheme" >  
  6.         <meta-data  
  7.             android:name="com.baidu.lbsapi.API_KEY"  
  8.             android:value="填写你申请的AK" />  

    权限:

 

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. <!-- 百度API所需权限 -->  
  2.     <uses-permission android:name="android.permission.GET_ACCOUNTS" />  
  3.     <uses-permission android:name="android.permission.USE_CREDENTIALS" />  
  4.     <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />  
  5.     <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />  
  6.     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  
  7.     <uses-permission android:name="android.permission.INTERNET" />  
  8.     <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />  
  9.     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />  
  10.     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />  
  11.     <uses-permission android:name="android.permission.READ_PHONE_STATE" />  
  12.     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  
  13.     <uses-permission android:name="android.permission.BROADCAST_STICKY" />  
  14.     <uses-permission android:name="android.permission.WRITE_SETTINGS" />  
  15.     <uses-permission android:name="android.permission.READ_PHONE_STATE" />  

    3. 在布局文件中添加地图控件:

 

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. <com.baidu.mapapi.map.MapView  
  2.         android:id="@+id/bmapview"  
  3.         android:layout_width="match_parent"  
  4.         android:layout_height="match_parent"  
  5.         android:clickable="true" />  

    4. 在应用程序创建时初始化SDK引用的Context全局变量。

 

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. @Override  
  2. protected void onCreate(Bundle savedInstanceState) {  
  3.     super.onCreate(savedInstanceState);  
  4.     requestWindowFeature(Window.FEATURE_NO_TITLE);  
  5.     //  
  6.     SDKInitializer.initialize(getApplicationContext());  
  7.     setContentView(R.layout.activity_main);  
  8.     init();  
  9. }  

        这里需要注意一下:initialize方法中必须传入的是ApplicationContext,传入this,或者MAinActivity.this都不行,不然会报运行时异常,所以百度建议把该方法放到Application的初始化方法中。

        然后重写activity的生命周期的几个方法来管理地图的生命周期。在activity的onResume、onPause、onDestory方法中分别执行mapview的onReusme、onPause、onDestory方法。

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. package com.bdmap.view;  
  2. import com.baidu.mapapi.SDKInitializer;  
  3. import com.baidu.mapapi.map.BaiduMap;  
  4. import com.baidu.mapapi.map.MapView;  
  5. import android.app.Activity;  
  6. import android.os.Bundle;  
  7. import android.view.View;  
  8. import android.view.Window;  
  9. public class MainActivity extends Activity {  
  10.     // 百度地图控件  
  11.     private MapView mMapView = null;  
  12.     // 百度地图对象  
  13.     private BaiduMap bdMap;  
  14.     @Override  
  15.     protected void onCreate(Bundle savedInstanceState) {  
  16.         super.onCreate(savedInstanceState);  
  17.         requestWindowFeature(Window.FEATURE_NO_TITLE);  
  18.         //  
  19.         SDKInitializer.initialize(getApplicationContext());  
  20.         setContentView(R.layout.activity_main);  
  21.         init();  
  22.     }  
  23.   
  24.     /** 
  25.      * 初始化方法 
  26.      */  
  27.     private void init() {  
  28.         mMapView = (MapView) findViewById(R.id.bmapview);  
  29.     }  
  30.     @Override  
  31.     protected void onResume() {  
  32.         super.onResume();  
  33.         mMapView.onResume();  
  34.     }  
  35.     @Override  
  36.     protected void onPause() {  
  37.         super.onPause();  
  38.         mMapView.onPause();  
  39.     }  
  40.     @Override  
  41.     protected void onDestroy() {  
  42.         mMapView.onDestroy();  
  43.         mMapView = null;  
  44.         super.onDestroy();  
  45.     }  
  46. }  


    完成以上步骤,此时就可以完成一个简单的”Hello Map“程序了。

三、普通地图和卫星地图切换

   百度地图将地图的类型分为两种:普通矢量地图和卫星图。

 

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. mMapView = (MapView) findViewById(R.id.bmapView);    
  2. mBaiduMap = mMapView.getMap();    
  3. //普通地图    
  4. mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);    
  5. //卫星地图    
  6. mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);  

四、显示实时交通图(路况图)

 

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. //开启交通图     
  2. mBaiduMap.setTrafficEnabled(true);  

五、显示热力图

    热力图就是以特殊高亮的形式显示访客热衷的页面区域和访客所在的地理区域的图示。通俗来说就是显示地图上某一块区域的人的密集程度。类似于下图所示:

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. //开启热力图     
  2. mBaiduMap.setBaiduHeatMapEnabled(true);  


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

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

相关文章

会按摩的充气颈枕,只占行李箱一个角,却能让你的脖子爽到爆

▲ 点击查看出差、旅游、探亲&#xff0c;舟车劳顿的路上&#xff0c;想要休息实在太难。临近国庆&#xff0c;有多少人准备外出旅游、回家或者出差的&#xff1f;然而在舟车劳顿的路上&#xff0c;想要休息一下&#xff0c;不要太难。睡到一半撞到车窗痛醒&#xff0c;不小心歪…

Envoy实现.NET架构的网关(一)静态配置与文件动态配置

什么是Gateway在微服务体系结构中&#xff0c;如果每个微服务通常都会公开一组精细终结点&#xff0c;这种情况可能会有以下问题如果没有 API 网关模式&#xff0c;客户端应用将与内部微服务相耦合。在客户端应用中&#xff0c;单个页面/屏幕可能需要多次调用多个服务。 如果没…

corosync和pacemaker实现httpd和mysql双集群

一、环境介绍&#xff1a;三台均为双网卡&#xff1a;openstack-control.example.com openstack-control eth0:172.16.171.100eth1:10.1.1.100 openstack-nova.example.com openstack-novaeth0:172.16.171.110eth1:10.1.1.110openstack-neutron.example.com openstack-neutrone…

25岁男生要有多少存款才能让女友满意?

1 男女观念差异这么大的吗&#xff1f;▼2 演绎人生从落魄到适应再到悠哉的三个阶段▼3 牌子大&#xff0c;了不起咯~▼4 这鬼才文案用在这里屈才了▼5 狗子&#xff1a;你就说&#xff0c;我演的哪里不像&#xff1f;▼6 7个月一点没变我觉得已经蛮厉害得了▼7 不小心跟…

心得9--jsp设计模版

1.常用的面向对象设计模式有4种&#xff1a; Factory模式、Singleton模式、Facade模式和MVC架构模式。 SUN公司推出JSP技术后&#xff0c;同时也推荐了两种web应用程序的开发模式&#xff0c;一种是JSPJavaBean模式&#xff0c;一种是ServletJSPJavaBean(MVC)模式。 JSP设计模…

C# 泛型的使用

01—泛型概述泛型是用于处理算法、数据结构的一种编程方法。泛型的目标是采用广泛适用和可交互性的形式来表示算法和数据结构&#xff0c;以使它们能够直接用于软件构造。泛型类、结构、接口、委托和方法可以根据它们存储和操作的数据的类型来进行参数化。泛型能在编译时提供强…

在数学世界,都有这些美妙的数学公式是你不认识的......

全世界只有3.14 % 的人关注了爆炸吧知识什么是数学&#xff1f;华罗庚说&#xff1a;宇宙之大&#xff0c;粒子之微&#xff0c;火箭之速&#xff0c;化工之巧&#xff0c;地球之变&#xff0c;生物之谜&#xff0c;日用之繁&#xff0c;无处不用数学......回首往昔&#xff0c…

Android MediaScanner:(一)MediaScanner总体架构

Android MediaScanner&#xff1a;&#xff08;一&#xff09;MediaScanner总体架构 分类&#xff1a; Android android.multimedia2012-05-19 18:29 5050人阅读 评论(5) 收藏 举报androidservice数据库工作interfaceinsert田海立csdn 2012-05-19 本文是笔者的分析归纳&#xf…

报表系统FineReport通过权限控制数据访问方案

2019独角兽企业重金招聘Python工程师标准>>> 问题&#xff1a;实际应用环境中&#xff0c;不同角色的人可能对数据具有不同的访问权限&#xff0c;通过直接在SQL语句中筛选出需要的数据制作模板可以解决该需求&#xff0c;但对于角色较多的情况&#xff0c;就需要制…

SkyWalking配上告警更优秀

前言对于监控系统来说&#xff0c;不可能让人一直盯着监控看板&#xff0c;而更多的是以自动提醒的方式&#xff0c;比如邮件、短信或微信推送等&#xff0c;当达到或超出预设的告警指标时&#xff0c;就自动发送消息提醒&#xff0c;下面就来说说如何配置SkyWalking的告警。正…

神抓拍!2020搞笑野生动物摄影大赛,哈哈哈哈哈笑到头掉

全世界只有3.14 % 的人关注了爆炸吧知识图片来自CWPAs 2020小动物们到底能有多好玩让我们来看看今年的搞笑野生动物摄影大赛吧保准叫你从头笑到尾&#xff08;以下是入围作品&#xff09;“飚自行车的”猴看起来像个酷猴▲摄影&#xff1a;Yevhen Samuchenko真情实感演绎“我太…

绝不翻车珍珠奶茶做法

1 如何在家自制珍珠奶茶▼2 儿子&#xff0c;妈妈给你烤小饼干哦▼3 放假太久了连自己哪个班都忘了▼4 想问下&#xff0c;鸟是在哪都能起窝吗&#xff1f;▼5 不到万不得已&#xff0c;绝不去做▼6 这个店名太童年阴影了▼7 小鸡做错了什么&#xff1f;▼你点的每个赞&…

施一公:“中国式科研”误国误民!表面上一片繁荣,实则深藏危机

全世界只有3.14 % 的人关注了爆炸吧知识论文和科技实力是两回事在全国政协十三届一次会议上&#xff0c;中国科学院院士、清华大学原副校长施一公曾说道&#xff1a;“我以前曾经预测&#xff0c;中国会在2020年论文数超过美国&#xff0c;没想到我们提前完成了。”但面对这项数…

正确使用和理解C#中的闭包

定义 我们把在Lambda表达式(或匿名方法)中所引用的外部变量称为捕获变量。而捕获变量的表达式就称为闭包。捕获变量 捕获的变量会在真正调用委托时“赋值”&#xff0c;而不是在捕获时“赋值”&#xff0c;即总是使用捕获变量的最新的值。如下代码所示&#xff0c;调用委托时&a…

重磅公开!36个高考数学破题大招

前段时间&#xff0c;超模君发了关于极值点偏移问题的总结资料&#xff0c;朋友们都觉得内容整合得十分详细。同时&#xff0c;也有不少很多朋友留言说希望有其他高考数学常考问题的解题总结。确实&#xff0c;毕竟高考涉及的内容非常多&#xff0c;比如说参数范围问题、数列求…

Linux服务器数据备份

2019独角兽企业重金招聘Python工程师标准>>> 服务器上的数据是如此重要&#xff0c;以至于我们定期要对其进行备份&#xff01;这里讲一下mysql的备份和使用rsync同步服务器上的文件&#xff0c;从而实现多台linux服务器之间的文件的备份。 一 Mysql备份 mysql的备份…

与毒”共舞30年!清华美女研究生为何放弃高薪,选择特招入伍?背后的原因令人泪崩......

全世界只有3.14 % 的人关注了爆炸吧知识从武汉新冠疫情爆发到如今&#xff0c;陈薇没有一天休息。短短半年间&#xff0c;54岁的她头发从黑到白&#xff0c;也哭了好几次。刚去武汉-现在陈薇的母亲也在电视上看到了女儿的变化&#xff1a;“她变老了&#xff0c;都有白头发了。…

Centos-启动network报错RTNETLINK answers: File exists解决方法

背景&#xff1a;今天在Vcenter上&#xff0c;用模板克隆了一个虚拟机&#xff0c;启动之后&#xff0c;网卡启动不了&#xff0c;报错如下&#xff1a;RTNETLINK answers: File exists说明&#xff1a; 环境 Centos6.6_X64 &#xff1b; 网卡两个原因&#xff1a; 由于用模板…

不当败家子的原因......

1 实在是太真实&#xff01;▼2 有钱就是可以为所欲为&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼3 在哪都要有仪式感&#xff01;▼4 送自己去孤儿院......▼5 万万没想到...&#xff08;图源网络&#xff0c;侵删&#xff09;▼6 这都能催的&#xff1f;▼…

我不信奉Scrum,我信奉敏捷

Scrum一直以来争论不断。虽然创始人Ken在演讲中曾说过即使是白痴也可以用Scrum&#xff0c;但是依然有很多人认为Scrum对团队成员的素质要求非常高。另据统计&#xff0c;75%以上的Scrum都可以称得上失败。 去年十月&#xff0c;有幸参加了Outsofting鲍央舟老师的Scrum培训。培…