MapBox Android版开发 1 配置

前言

本文主要介绍如何使用MapBox SDK V9V11两个版开发Android地图应用。

准备工作:

  • 注册MapBox账户
  • 获取公钥
  • 获取私钥(确保选中Downloads:Read,注意申请后只有一次机会复制机会)

主要步骤:

  1. 创建工程
  2. 配置地图
  3. 显示地图
  4. 运行效果

MapBox V9 配置

创建工程

  1. AndroidStudio 选择菜单 FileNewNew Project... ,打开 New Project 对话框;
  2. 选择模板 Empty Views Activity,单击Next
  3. 项目参数参考如下,设置后,单击Finish
参数
Namemapdemo
Package namecom.example.mapdemo
Save location默认路径或自定义路径即可
LanguageJava
Minimum SDK默认推荐即可
Build configuration languageGroovy DSL (build.gradle)
  1. 至此创建项目完成,目录结构如下:
├── app
│   ├── build.gradle
│   ├── libs
│   ├── proguard-rules.pro
│   └── src
│       ├── androidTest
│       ├── main
│       └── test
├── build.gradle
├── gradle
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── local.properties
└── settings.gradle

配置地图

配置私钥

  1. 找到 Gradle 用户主文件夹 «USER_HOME»/.gradle
  2. 创建文件gradle.properties,即 «USER_HOME»/.gradle/gradle.properties
  3. 将私钥添加到 gradle.properties文件中:
MAPBOX_DOWNLOADS_TOKEN=YOUR_SECRET_MAPBOX_ACCESS_TOKEN

配置公钥

  1. app 模块中创建文件 app/src/main/res/values/developer-config.xml
  2. 将公钥添加到 developer-config.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 ,声明 Mapbox Downloads APImaven 。其中:
    • 用户名为 mapbox
    • 密码为私钥(从文件 «USER_HOME»/.gradle/gradle.properties 中获取)。
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        maven {
            url 'https://api.mapbox.com/downloads/v2/releases/maven'
            authentication {
                basic(BasicAuthentication)
            }
            credentials {
                // Do not change the username below.
                // This should always be `mapbox` (not your username).
                username = 'mapbox'
                // Use the secret token you stored in gradle.properties as the password
                password = providers.gradleProperty("MAPBOX_DOWNLOADS_TOKEN").get()
            }
        }
    }
}

配置依赖

  • 文件 app/build.gradledependencies中添加依赖项。
dependencies {
    implementation 'com.mapbox.mapboxsdk:mapbox-android-sdk:9.7.1'
}

配置权限

  • 文件 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>

地图初始化

  1. 自定义Application类;
  2. AndroidManifest.xml 中声明该Application类;
  3. 初始化地图。
  • DemoApp 类完整代码如下:
package com.example.mapdemo;

import android.app.Application;

import com.mapbox.mapboxsdk.Mapbox;

public class DemoApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();

        Mapbox.getInstance(this, getString(R.string.mapbox_access_token));
    }
}
  • 文件 AndroidManifest.xmlapplication中配置自定义Application类。
<application
        android:name=".DemoApp"
>
</application>

显示地图

布局文件

  • activity_main.xml 中添加地图视图。
<com.mapbox.mapboxsdk.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_uiCompassGravity="start|top" />

地图Activity

  • MainActivity管理地图视图生命周期。完整代码如下:
package com.example.mapdemo;

import android.os.Bundle;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import com.mapbox.mapboxsdk.maps.MapView;
import com.mapbox.mapboxsdk.maps.MapboxMap;
import com.mapbox.mapboxsdk.maps.OnMapReadyCallback;
import com.mapbox.mapboxsdk.maps.Style;

public class MainActivity extends AppCompatActivity {
    MapView mapView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mapView = findViewById(R.id.mapView);
        mapView.onCreate(savedInstanceState);
        mapView.getMapAsync(new OnMapReadyCallback() {
            @Override
            public void onMapReady(@NonNull MapboxMap mapboxMap) {

                mapboxMap.setStyle(Style.MAPBOX_STREETS, new Style.OnStyleLoaded() {
                    @Override
                    public void onStyleLoaded(@NonNull Style style) {
                        // Map is set up and the style has loaded. Now you can add data or make other map adjustments
                    }
                });
            }
        });
    }

    @Override
    public void onResume() {
        super.onResume();
        mapView.onResume();
    }

    @Override
    protected void onStart() {
        super.onStart();
        mapView.onStart();
    }

    @Override
    protected void onStop() {
        super.onStop();
        mapView.onStop();
    }

    @Override
    public void onPause() {
        super.onPause();
        mapView.onPause();
    }

    @Override
    public void onLowMemory() {
        super.onLowMemory();
        mapView.onLowMemory();
    }

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

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        mapView.onSaveInstanceState(outState);
    }

}

运行效果

在这里插入图片描述

MapBox V11 配置

版本兼容性

Versionv11
Minimum Android Version5.0 (API level 21)
Kotlin1.6.0 or later
Target/Compile SDK Version33
NDK Version23.2.8568313
OpenGLOpenGL ES 3.0

创建工程

  1. AndroidStudio 选择菜单 FileNewNew Project... ,打开 New Project 对话框;
  2. 选择模板 Empty Views Activity,单击Next
  3. 项目参数参考如下,设置后,单击Finish
参数
Namemapdemo
Package namecom.example.mapdemo
Save location默认路径或自定义路径即可
Languagekotlin
Minimum SDK默认推荐即可
Build configuration languageKotlin DSL (build.gradle.kts)
  1. 至此创建项目完成,目录结构如下:
├── 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

配置地图

配置私钥

  1. 找到 Gradle 用户主文件夹 «USER_HOME»/.gradle
  2. 创建文件gradle.properties,即 «USER_HOME»/.gradle/gradle.properties
  3. 将私钥添加到 gradle.properties文件中:
MAPBOX_DOWNLOADS_TOKEN=YOUR_SECRET_MAPBOX_ACCESS_TOKEN

配置公钥

  1. app 模块中创建文件 app/src/main/res/values/mapbox_access_token.xml
  2. 将公钥添加到 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.ktsdependencies中添加依赖项。
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" />

运行效果

在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值