MapBox Android版开发 1 配置

news2024/11/14 13:26:02

MapBox Android版开发 1 配置

  • 前言
  • MapBox V9 配置
    • 创建工程
    • 配置地图
      • 配置私钥
      • 配置公钥
      • 配置仓库
      • 配置依赖
      • 配置权限
      • 地图初始化
    • 显示地图
      • 布局文件
      • 地图Activity
    • 运行效果
  • MapBox V11 配置
    • 创建工程
    • 配置地图
      • 配置私钥
      • 配置公钥
      • 配置仓库
      • 配置依赖
      • 配置权限
    • 显示地图
      • 布局文件
    • 运行效果

前言

本文主要介绍如何使用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" />

运行效果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2056000.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ee trade:黄金投资与股票投资的区别

黄金和股票&#xff0c; 是金融市场中两种常见的投资工具&#xff0c; 它们拥有截然不同的特点和风险&#xff0c; 了解它们的差异&#xff0c; 可以帮助投资者制定更合理的投资策略。 一、 投资性质&#xff1a; 避险与成长&#xff0c; 两种投资方向 黄金&#xff1a; 被视…

金价徘徊高位,市场聚焦美联储降息预期

现货黄金高位震荡 周二亚市早盘&#xff0c;现货黄金在2500美元/盎司关口附近徘徊&#xff0c;交投于2503.23美元/盎司附近。金价周一在创纪录的高位后出现回调&#xff0c;投资者从涨势中获利了结&#xff0c;并根据美联储的线索调整仓位&#xff0c;现货黄金最终收报2504.1…

Vue - 详细介绍 vue-monoplasty-slide-verify vue3-puzzle-vcode 滑动验证组件

Vue - 详细介绍 vue-monoplasty-slide-verify & vue3-puzzle-vcode 滑动验证组件 在日常的账号登录所需要的大部分是滑动验证来检验人为操作&#xff0c;免于字母验证码的繁琐输入&#xff0c;下面介绍在Vue2和Vue3中适用的滑动验证组件。 1、vue-monoplasty-slide-verif…

【GitLab】使用 Docker 安装 3:gitlab-ce:17.3.0-ce.0 配置

参考阿里云的教程docker的重启 sudo systemctl daemon-reload sudo systemctl restart docker配置 –publish 8443:443 --publish 8084:80 --publish 22:22 sudo docker ps -a 當容器狀態為healthy時,說明GitLab容器已經正常啟動。 root@k8s-master-pfsrv:~

远离内卷,新的跨境电商蓝海,智能小家电沃尔玛1P新赛道——WAYLI威利跨境助力商家

随着全球经济格局的变迁&#xff0c;跨境电商已经成为新的蓝海领域&#xff0c;其中智能小家电市场更是呈现出蓬勃的发展态势。在这样的背景下&#xff0c;沃尔玛1P会员凭借其独特的优势&#xff0c;正开辟出一条全新的跨境电商赛道。 一、智能小家电市场崛起&#xff0c;源于消…

通义灵码代码搜索功能的前沿性研究论文被软件工程国际顶会 FSE 录用

在今年 FSE 2024 软件工程大会上&#xff0c;阿里云通义灵码团队和重庆大学合作的论文《An Empirical Study of Code Search in Intelligent Coding Assistant: Perceptions, Expectations, and Directions》被 FSE Industry 2024 (CCF A) 录用。 本篇论文主要探讨了在智能编码…

告别硬件!试试ToDesk云电脑,让你的云端体验更有趣

在这个不断进步的数字时代&#xff0c;科技的每一次突破都在重新塑造我们的生活和工作模式。随着云计算技术的不断成熟&#xff0c;传统的硬件限制正在逐渐消失&#xff0c;一个全新的云端时代正悄然兴起。ToDesk云电脑作为这场变革的领航者&#xff0c;正引领我们进入一个更加…

海绵城市雨水监测系统简介

海绵城市雨水监测系统主要有&#xff1a;数据采集、无线数据传输、后台云服务、终端平台显示等部分组成。系统通过前端数据采集水质&#xff08;ss\cod\浊度、PH等&#xff09;、雨水雨量、流量、水位、土壤湿度、气象等数据。通过无线数据传输通讯&#xff08;4G、5G、以太网、…

高性能web服务器详解

一、Web服务的基础介绍 正常情况下单次web服务访问的流程简图&#xff1a; 1.1 Web服务介绍 这里介绍的是 Apache 和 NGINX 1.1.1 Apache 经典的Web服务端 Apache 起初由美国的伊利诺伊大学香槟分校的国家超级计算机应用中心开发 目前经历了两大版本分别是 1.X 和 2.X…

Ubuntu 16.04 通过deb包安装内核头文件

文章目录 前言通过deb包安装内核头文件 前言 Ubuntu16.04部分内核版本无法通过 apt-get install linux-headers-$(uname -r) 来进行安装&#xff1a; # cat /etc/lsb-release DISTRIB_IDUbuntu DISTRIB_RELEASE16.04 DISTRIB_CODENAMExenial DISTRIB_DESCRIPTION"Ubuntu…

linux 部署YUM仓库及NFS共享服务

目录 简介 一、YUM仓库服务 1.1 YUM概述 1.2 linux系统各家厂家用的安装源 1.3 yum命令 1.4 yum下载方式 1.5 部署YUM软件仓库 二、NFS共享存储服务 2.1 NFS共享存储服务概念 2.2 NFS配置环境 2.3 使用NFS发布共享资源 2.4 在客户端访问NFS共享 简介 yum&#xff…

测试面试题集锦(五)| 自动化测试与性能测试篇(附答案)

简介 本系列文章总结归纳了一些软件测试工程师常见的面试题&#xff0c;主要来源于个人面试遇到的、网络搜集&#xff08;完善&#xff09;、工作日常讨论等&#xff0c;分为以下十个部分&#xff0c;供大家参考。如有错误的地方&#xff0c;欢迎指正。有更多的面试题或面试中遇…

Apeaksoft Video Converter Ultimate for Mac:强大的视频转换与编辑工具

Apeaksoft Video Converter Ultimate for Mac是一款专为Mac用户设计的视频转换与编辑软件&#xff0c;凭借其强大的功能和用户友好的界面&#xff0c;在视频处理领域脱颖而出。该软件不仅支持多种视频格式的转换&#xff0c;还内置了丰富的视频编辑功能&#xff0c;让用户能够轻…

海康VisionMaster使用学习笔记12-通信框架介绍

1. 通信的用途 用途: 通信是连通算法平台和外部设备的重要渠道&#xff0c;在算法平台中既支持外部数据的读入也支持数据的写出&#xff0c;当通信构建起来以后既可以把软件处理结果发送给外界&#xff0c;又可以通过外界发送字符来触发相机拍照或者软件运行。 2. 通信的种类…

提升工作效率的五大神器

在这个信息爆炸、节奏加速的时代&#xff0c;高效工作已经成为了职场人士追求的目标。如何在短时间内完成更多的工作任务&#xff0c;同时保持高质量的输出&#xff1f;答案在于合理利用工具。以下是五个能够显著提升工作效率的软件推荐&#xff0c;它们各自在任务管理、团队协…

【LLM大模型】大模型涌现能力及 Prompt Engineering提示词

涌现能力 GPT3是第一批拥有“涌现能力”的大语言模型&#xff0c;即模型未经特定任务的训练&#xff0c;但在适当的提示下&#xff0c;仍然能够解决某些特定领域的问题。 例如大语言模型可以解答数学问题、辅助进行编程、甚至是进行问答等&#xff0c;其实都属于模型的涌现能…

FMEA项目难落地?原因在这里

很多企业反馈到“FMEA项目难落地”其实并不是大家不想做好FMEA&#xff0c;目前各个企业做不好的FMEA的最关键的原因&#xff0c;还是大家做FMEA的方法不正确。详情如深圳天行健企业管理咨询公司下文所述&#xff1a; 1、 分析对象定义不清 做FMEA时&#xff0c;首先得弄清楚你…

Xterminal工具的安装与使用体验

Xterminal工具的安装与使用体验 一、Xterminal简介二、Xterminal核心特性三、Xterminal使用场景四、Xterminal下载地址五、Xterminal的基本使用5.1 设置仓库密码5.2 SSH连接5.3 Windows远程桌面5.4 笔记功能5.5 AI工具 六、总结 一、Xterminal简介 Xterminal是一款专为开发者设…

ubuntu虚拟机VBOX无法读取usb设备的解决办法

关闭虚拟电脑&#xff0c;在设置->USB设置选择你的usb版本再试试看再右下角右键选择你的设备应该就行了

OpenCV几何图像变换(3)计算透视变换矩阵函数getPerspectiveTransform()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 计算四对对应点之间的透视变换。 该函数计算 33 的透视变换矩阵&#xff0c;使得&#xff1a; [ t i x i ′ t i y i ′ t i ] map_matrix ⋅ …