前言
本文主要介绍如何使用MapBox SDK V11版开发Android地图应用。
准备工作:
- 注册MapBox账户
- 获取公钥
- 获取私钥(确保选中
Downloads:Read,注意申请后只有一次机会复制机会)
主要步骤:
- 创建工程
- 配置地图
- 显示地图
- 运行效果
MapBox V11 配置
版本兼容性
| Version | v11 |
|---|---|
| Minimum Android Version | 5.0 (API level 21) |
| Kotlin | 1.6.0 or later |
| Target/Compile SDK Version | 33 |
| NDK Version | 23.2.8568313 |
| OpenGL | OpenGL ES 3.0 |
创建工程
- AndroidStudio 选择菜单
File→New→New Project...,打开New Project对话框; - 选择模板
Empty Views Activity,单击Next; - 项目参数参考如下,设置后,单击
Finish;
| 参数 | 值 |
|---|---|
Name |
mapdemo |
Package name |
com.example.mapdemo |
Save location |
默认路径或自定义路径即可 |
Language |
kotlin |
Minimum SDK |
默认推荐即可 |
Build configuration language |
Kotlin DSL (build.gradle.kts) |
- 至此创建项目完成,目录结构如下:
├── app
│ ├── build.gradle.kts
│ ├── libs
│ ├── proguard-rules.pro
│ └── src
│ ├── androidTest
│ ├── main
│ └── test
├── build.gradle.kts
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── local.properties
└── settings.gradle.kts
配置地图
配置私钥
- 找到
Gradle用户主文件夹«USER_HOME»/.gradle; - 创建文件
gradle.properties,即«USER_HOME»/.gradle/gradle.properties; - 将私钥添加到
gradle.properties文件中:
MAPBOX_DOWNLOADS_TOKEN=YOUR_SECRET_MAPBOX_ACCESS_TOKEN
配置公钥
- 在
app模块中创建文件app/src/main/res/values/mapbox_access_token.xml: - 将公钥添加到
mapbox_access_token.xml文件中。
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="mapbox_access_token" translatable="false" tools:ignore="UnusedResources">YOUR_MAPBOX_ACCESS_TOKEN</string>
</resources>
配置仓库
- 打开文件
settings.gradle.kts,声明 Mapbox Downloads API 的maven。其中:- 用户名为
mapbox; - 密码为私钥(从文件
«USER_HOME»/.gradle/gradle.properties中获取)。
- 用户名为
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
// Mapbox Maven repository
maven {
url = uri("https://api.mapbox.com/downloads/v2/releases/maven")
// Do not change the username below. It should always be "mapbox" (not your username).
credentials.username = "mapbox"
// Use the secret token stored in gradle.properties as the password
credentials.password = providers.gradleProperty("MAPBOX_DOWNLOADS_TOKEN").get()
authentication.create<BasicAuthentication>("basic")
}
}
}
配置依赖
- 文件
app/build.gradle.kts,dependencies中添加依赖项。
dependencies {
implementation("com.mapbox.maps:android:11.6.0")
}
配置权限
- 文件
AndroidManifest.xml,manifest标签中添加定位权限。
<manifest>
<!-- Always include this permission -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- Include only if your app benefits from precise location access. -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
</manifest>
显示地图
布局文件
-
activity_main.xml中添加地图视图。
<com.mapbox.maps.MapView
android:id="@+id/mapView"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:mapbox_cameraTargetLat="32.2857965"
app:mapbox_cameraTargetLng="104.293174"
app:mapbox_cameraZoom="2"
app:mapbox_cameraPitch="0.0"
app:mapbox_cameraBearing="0.0" />
运行效果

效果图v11.png