Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 161|回复: 0

[默认分类] Android百度地图开发(一)之初体验

[复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2018-5-22 13:53:16 | 显示全部楼层 |阅读模式


    转载请注明出处:http://blog.csdn.net/crazy1235/article/details/42614603  
         做关于位置或者定位的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中添加开发秘钥和所需权限。
      
    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" />
    复制代码

         权限:
      
      
    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. 在布局文件中添加地图控件:
      
      
    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全局变量。
      
      
    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方法。
    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.         private void init() {
    27.                 mMapView = (MapView) findViewById(R.id.bmapview);
    28.         }
    29.         @Override
    30.         protected void onResume() {
    31.                 super.onResume();
    32.                 mMapView.onResume();
    33.         }
    34.         @Override
    35.         protected void onPause() {
    36.                 super.onPause();
    37.                 mMapView.onPause();
    38.         }
    39.         @Override
    40.         protected void onDestroy() {
    41.                 mMapView.onDestroy();
    42.                 mMapView = null;
    43.                 super.onDestroy();
    44.         }
    45. }
    复制代码

         
    完成以上步骤,此时就可以完成一个简单的”Hello Map“程序了。
      
    三、普通地图和卫星地图切换
        百度地图将地图的类型分为两种:普通矢量地图和卫星图。
      
    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);
    复制代码

    四、显示实时交通图(路况图)
      
    1. //开启交通图   
    2. mBaiduMap.setTrafficEnabled(true);
    复制代码

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

      
      

    1. //开启热力图   
    2. mBaiduMap.setBaiduHeatMapEnabled(true);
    复制代码





    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-17 06:30 , Processed in 0.367319 second(s), 37 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表