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,一经查实,立即删除!

相关文章

php cli swoole mysql_[了解实践]Swoole、PHP与MySQL:连接池,swoole扩展实现真正的PHP数据库连接池。...

背景&#xff1a;swoole的出现&#xff0c;包括PHP出现前&#xff0c;在新浪企业邮箱就有基于Sun Solaris 系统上面用c写Mysql的长连接&#xff0c;那时候的长连接是基于RPC实现&#xff0c;对mysql那一端形成一个远程过程的调用&#xff0c;通过XDR数据结构进行解析mysql传来的…

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

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

转:编写高效的Android代码

毫无疑问&#xff0c;基于Android平台的设备一定是嵌入式设备。现代的手持设备不仅仅是一部电话那么简单&#xff0c;它还是一个小型的手持电脑&#xff0c;但是&#xff0c;即使是最快的最高端的手持设备也远远比不上一个中等性能的桌面机。 这就是为什么在编写Android程序时要…

給定周中的特定天

转:給定周中的特定天 另一個常見的需求是&#xff0c;僅在每月中的特定星期數運行。例如&#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 不小心跟…

查看mysql数据库历史_查看mysql数据库历史

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航&#xff0c;为用户…

IT学习--学习不一定要用在现实工作中

很多人在学习知识的时候总是说这个学了没用&#xff0c;这个学了用不上&#xff0c;所以很多人就干脆不学。今天就站在我个人观点上对这个问题进行讨论 以考CCIE为例&#xff0c;有些工作经验的考生会对自己的工作有个的认识&#xff0c;知道自己哪些知识是工作上用得上的&…

心得9--jsp设计模版

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

C# 泛型的使用

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

80040e14 mysql_【ASP】提示错误80040e14

是的&#xff0c;提示Cls_vbsPage.asp 行164 有问题&#xff0c;整个代码如下&#xff1a;Class Cls_vbsPagePrivate oConn 连接对象Private iPagesize 每页记录数Private sPageName 地址栏页数参数名Private sDbType数据库类型,AC为access,MSSQL为SQL SERVER2000…

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

全世界只有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…

协变和逆变

http://msdn.microsoft.com/zh-cn/library/vstudio/dd997386.aspx转载于:https://www.cnblogs.com/mingyongcheng/archive/2012/11/15/2771568.html

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

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

SkyWalking配上告警更优秀

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

python sqllite远程_Python实现Sqlite将字段当做索引进行查询的方法

本文实例讲述了Python实现Sqlite将字段当做索引进行查询的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;默认从sqlite中获取到的数据是数字索引的, 在开发阶段经常有修改数据库所以显得不太方便, 其实在python源码里就有解决方案, 直接读sqlite3的源码, 摸索了一…

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

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

【转载】ESFramewor使用技巧(2)-- 在插件中使用NHibernate

ESFramewor使用技巧&#xff08;2&#xff09;&#xff0d;&#xff0d; 在插件中使用NHibernate 我们来讨论一下这种情景&#xff0c;你采用基于ESFramework的4层架构进行应用开发&#xff0c;你分析用户的需求&#xff0c;并将其分类整理为几大块&#xff0c;考虑每一块使用…