Android编程笔记3——加载百度地图,以及加载百度地图只显示方格,地图加载不出来问题

本文详细介绍了如何在Android Studio中集成百度地图SDK的过程,包括申请密钥、下载及配置开发包、添加地图控件和权限设置等内容,并解决了地图加载失败的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目需要用到百度地图。。。挺瞎的。。。折腾一晚上
虽说跟着百度地图的说明是能搞出来了。。然后。。我还是一次没成功。。。
还是记录一下吧

整个过程参考百度地图地图sdk使用说明(不给链接了)

一、Android studio配置
1、申请秘钥
这就不多说了,按照说明来,成功拿到秘钥
2、下载开发包
这里根据个人需要下载,我下载的是 全量定位 和 基础地图这两个包
3、开发包添加
下载好的开发包解压后里面有5个文件夹和一个.jar文件
这里写图片描述
全部复制到项目里 app/libs文件夹下
这里写图片描述
在src/main下建立jniLibs文件夹,再把开发包里的五个文件夹放进去。。。。。。官网是这么说的。。。然后。。。我把jniLibs文件夹建到了src/main/java下。。。照样能用
这里写图片描述
4、配置开发包
在app下的build.gradle里,添加代码

sourceSets{
  main{
       jniLibs.srcDir 'libs'  
       //说明so的路径为该libs路径,关联所有地图SDK的so文件
      }
}

这里写图片描述
5、往工程中添加jar文件
右键-选择Add As Library,导入到工程中。同时在build.gradle中会生成工程所依赖的对应的jar文件说明

dependencies{
  compile files('libs/BaiduLBS_Android.jar')
}

这里写图片描述

至此配置完成,下面开始搬代码

二、 在工程里搞出地图
1、添加秘钥和权限
在AndroidManifest.xml文件中添加秘钥

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

这里写图片描述
在AndroidManifest.xml文件中添加权限

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
//获取设备网络状态,禁用后无法获取网络状态
<uses-permission android:name="android.permission.INTERNET"/> 
//网络权限,当禁用后,无法进行检索等相关业务
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
//读取设备硬件信息,统计数据
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /> 
//读取系统信息,包含系统版本等信息,用作统计
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
//获取设备的网络状态,鉴权所需网络代理
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
//允许sd卡写权限,需写入地图数据,禁用后无法显示地图
<uses-permission android:name="android.permission.WRITE_SETTINGS" /> 
//获取统计数据
<uses-permission android:name="android.permission.GET_TASKS" /> 
//鉴权所需该权限获取进程列表
<uses-permission android:name="android.permission.CAMERA" />  
//使用步行AR导航,配置Camera权限

这里写图片描述
2、在布局文件中添加地图控件

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

这里写图片描述
3、Activity代码

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

这样地图就显示了

三、关于地图加载不出来的问题
这个问题。。。是我自己傻了。。。在申请秘钥的时候填的包名要和项目里的包名要完全一致!!
这里写图片描述
这里写图片描述
包名不一致地图都出不来。。。我第一次申请的时候填的com.baidumap.demo(捂脸)

2、第二种情况。。。测试机没联网。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值