Android Studio连接百度地图API,并且简单实践

4 篇文章 0 订阅
3 篇文章 0 订阅

想要在APP中加入百度地图,考虑到使用百度地图API。主要内容参考百度地图开放平台

获取秘钥

  1. 通过网址百度地图应用管理创建应用获取秘钥。如果不是开发者,需要先注册,步骤参考文档注册百度开发者
  2. 上述步骤完成后,应该看到的结果是这样的:
    在这里插入图片描述
    至此,秘钥获取成功。

百度地图开发包下载

  1. 下载地址:LBS Android SDK
    在这里插入图片描述
  2. 选择自定义下载。
    在这里插入图片描述
  3. 根据上图,根据需要选择,之后点击“开发包”即可。下载得到的文件解压以后如下。
    在这里插入图片描述
    上述文件可以分为两类,最后一个BaiduLBS_Android.jar文件和其他的文件夹(内部都为.so)。

Android Studio 配置

  1. 将.jar文件放入app->libs目录下。见下图
    在这里插入图片描述
  2. 将剩余文件放入app->src->main->jniLibs目录下,见上图。(jniLibs目录需要自己创建)
  3. 在工程配置中需要将前面添加的jar文件集成到我们的工程中。点击下图所示按钮。(也可以通过对.jar文件右键,选择Add As Library,就不进行这步操作了)
    在这里插入图片描述
  4. 可以看见.jar文件发生了变化,表示集成配置成功。

在这里插入图片描述

简单实践

显示地图

  1. 添加秘钥
    配置文件app/src/AndroidManifest.xml中添加如下代码(开发者key对应之前申请到的秘钥)
<application>  
    <meta-data  
        android:name="com.baidu.lbsapi.API_KEY"  
        android:value="开发者 key" />  
</application>
  1. 在外部添加如下权限声明:
<!-- 访问网络,进行地图相关业务数据请求,包括地图数据,路线规划,POI检索等 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 获取网络状态,根据网络状态切换进行数据请求网络转换 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    
<!-- 读取外置存储。如果开发者使用了so动态加载功能并且把so文件放在了外置存储区域,则需要申请该权限,否则不需要 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!-- 写外置存储。如果开发者使用了离线地图,并且数据写在外置存储区域,则需要申请该权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

注:自Android6.0起部分权限的使用需要开发者在代码中动态申请。

  1. 在layout 布局文件中添加如下控件。
<com.baidu.mapapi.map.MapView
	android:id="@+id/bmapView"
	android:layout_width="match_parent"
	android:layout_height="match_parent"
	android:clickable="true" />
  1. 编辑MainActivity主活动文件。
package com.example.bdmaptest;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

import com.baidu.mapapi.CoordType;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.MapView;

public class MainActivity extends AppCompatActivity {

    private MapView mMapView = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        SDKInitializer.initialize(getApplicationContext()); 
        setContentView(R.layout.activity_main);
        //SDKInitializer.setCoordType(CoordType.BD09LL); //默认是BD09LL坐标
        mMapView=findViewById(R.id.bmapView);
    }

    @Override
    protected void onResume() {
        super.onResume();
        mMapView.onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
        mMapView.onPause();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mMapView.onDestroy();
    }
}

说一下注意点。

  • SDKInitializer.initialize(getApplicationContext());这行代码一定要放在setContentView(R.layout.activity_main);之前。
    不然会报错Error inflating class com.baidu.mapapi.map.MapView
  • 需要在主活动的 onResume(),onPause()和onDestroy的同时对地图进行生命周期管理。即mMapView.onxxxx()

运行结果:在这里插入图片描述

绘制点标记

  1. 在上一段代码的onCreate()末尾添加如下代码段即可。
        //获得地图控制器
        BaiduMap mBaiduMap = mMapView.getMap();
        //定义Maker坐标点
        LatLng point = new LatLng(39.963175, 116.400244);
        //构建Marker图标
        BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.drawable.icon_marka);
        //构建MarkerOption,用于在地图上添加Marker
        OverlayOptions option = new MarkerOptions().position(point).icon(bitmap);
        //在地图上添加Marker,并显示
        mBaiduMap.addOverlay(option);
  1. 大致解释在代码段的注释中,修改绘制点的属性可以参考开发指南.详细信息需要参考类参考文档

运行一下,结果如图(可以看到图上出现小箭头= =)。
在这里插入图片描述

绘制线标记

  1. 在上一段代码的onCreate()末尾添加如下代码段即可。
 //构建折线点坐标
 LatLng p1 = new LatLng(39.97923, 116.357428);
 LatLng p2 = new LatLng(39.94923, 116.397428);
 LatLng p3 = new LatLng(39.97923, 116.437428);
 List<LatLng> points = new ArrayList<LatLng>();
 points.add(p1);
 points.add(p2);
 points.add(p3);
 //设置折线的属性
 OverlayOptions mOverlayOptions = new PolylineOptions().width(10).color(0xAAFF0000).points(points);
 //在地图上绘制折线
 //mPloyline 折线对象
 Overlay mPolyline = mBaiduMap.addOverlay(mOverlayOptions);
  1. 绘制线条的属性可以简单参考开发指南
    运行一下,看看效果:
    在这里插入图片描述
  • 0
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值