Android地图应用新视界--mapbox的应用开发之初始集成篇

2024-06-01 08:08

本文主要是介绍Android地图应用新视界--mapbox的应用开发之初始集成篇,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

mapbox的应用开发之初始集成篇

最近一款应用需要集成可用于全球的Android地图应用,本应首选Googlemap,但因为众所周知的原因在国内无法使用,并且国内的手机出厂时大多阉割Google service的部分导致不可用,即便可以用也没有数据(与苹果的原生地图全球可用真是好伤心,期盼Google快点回归天朝吧);譬如百度,高德抑或腾讯地图只在国内有数据,国外无法使用,也综合考虑了微软的bing map 和诺基亚的here map,都对Android端不太好用.综合考虑之下选用mapbox  这是一款开源多平台的库可在全球使用并且支持很多自定义和扩展化,当然难度也较大 ,本文只引用和介绍初始的集成应用  ,后续会有各种开发的具体实现和demo分享,有兴趣的可以一试:
好了话不多说,直接参考如下,英文较多但也简单易懂

First steps with the Mapbox Android SDK

The Mapbox Android SDK is our vector maps library for Android. This guide will walk you through installing the Mapbox Android SDK with Android Studio, loading a map, placing a pin on it, and changing the map style.

Heads up! We’re still actively developing the Mapbox Android SDK and will update this guide and add new ones as we improve its amazing features.

Getting started

Here’s what you’ll need to get started:

  • An access token. You can find your access tokens on your account page.

  • Android Studio. You can get this for free from Google.

  • Google Play Developer Account (optional). If you want to publish your app to Google Play, you’ll need a Google Play developer account. Without one, you’ll still be able to preview the app on an Android Virtual Device (AVD) or install the demo app from an SDK on a physical device.

Setting up Android Studio

Open Android Studio and go to File ‣ New ‣ New Project to create a new project (or select Start a new Android Studio project). Under Configure your new project:

  • Name the project My First GL App
  • Set company domain to mycompany.com

Under Select the form factors your app will run on, check “Phone and Tablet.” For minimum SDK, select API 15: Android 4.0.3 (IceCreamSandwich). This is the lowest API level currently supported by Mapbox Android SDK.

Click Next to advance to the activity selection screen. Select Empty Activity and click Next. Accept the default Activity Name and Layout Name and click Finish.

Set up an Android Virtual Device

Android Studio can help you set up virtual Android devices on your computer to help test your app while you develop. To set one up, click on the Android Virtual Device (AVD) Manager icon , then click the Create Virtual Device button. From the Phones category, select Nexus 5 and click Next. Select the release you would like to test against (this guide was built using Lollipop API level 23, x86, Android 6.0). Learn more about setting up an AVD from Android Studio’s documentation.

Installing Mapbox

We recommend installing with Gradle. This will automatically install the necessary dependencies and pull the SDK binaries from the Maven Central repository Mapbox Android SDK on Maven Central.

To install the current stable version, add this to your Module Build File <PROJECT_ROOT>\app\build.gradle:

repositories {mavenCentral()}dependencies {compile fileTree(dir: 'libs', include: ['*.jar'])testCompile 'junit:junit:4.12'compile 'com.android.support:appcompat-v7:23.1.1'// add the Mapbox SDK dependency belowcompile ('com.mapbox.mapboxsdk:mapbox-android-sdk:4.0.0-beta.2@aar'){transitive=true}}

For a full example Android project incorporating the SDK in this manner, please see the Mapbox Android SDK test app.

  • Source: https://github.com/mapbox/mapbox-gl-native/tree/master/platform/android/MapboxGLAndroidSDKTestApp/

App permissions

Ensure the following core permissions are requested in your project’s AndroidManifest.xml file from ~/MyFirstGLApp/app/src/main/:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

If the app is targeting Android Marshmallow (API 23) or later it’s necessary to request permissions at runtime. Additionally, you’ll need to add the telemetry service inside your <application> tags:

<service android:name="com.mapbox.mapboxsdk.telemetry.TelemetryService" />

Access tokens

To use Mapbox services and APIs, such as maps, directions, and geocoding, you must have a Mapbox access token. You can find your access tokens in your account settings, where you can retrieve current tokens and generate new ones. Access tokens help you track usage and minimize disruption in the event a token needs to be revoked.

First, go to your account settings and create a new access token for My First GL App. Once you’ve got your token, open strings.xml file from ~/MyFirstGLApp/app/src/main/res/values.

Add a new string for your access token:

<resources><string name="app_name">My First GL App</string><string name="accessToken"><your access token here></string></resources>

We’ll reference the string in the next step.

MapView

The MapView class is the key component of our library. It behaves like any other View and its behavior can be changed statically with an XML layout file, or programmatically during runtime.

To add the MapView as a layout element, replace the code in the activity_main.xml file from ~/MyFirstGLApp/app/src/main/res/layout/ with the following:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"xmlns:mapbox="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><com.mapbox.mapboxsdk.maps.MapViewandroid:id="@+id/mapview"android:layout_width="fill_parent"android:layout_height="fill_parent"mapbox:access_token="@string/accessToken"/><!-- note the access token string created in the previous step --></RelativeLayout>

Later on, you can call the MapView class programmatically within an Activity:

findViewById(R.id.mapview);

MapboxMap

Once you have declared and assigned your MapView, you will need to call MapView.getMapAsync to create a MapboxMap object. The MapboxMap object allows you to change styles and interact with your map.

mapView.getMapAsync(new OnMapReadyCallback() {@Overridepublic void onMapReady(MapboxMap mapboxMap) {// Interact with the map using mapboxMap here}});

Now you’re ready to start building with Mapbox!

Adding a map

Let’s add a map of Chicago to our app. To start, open your My First GL App in Android Studio and navigate to ~/app/src/main/java/com.mycompany.myfirstglapp/MainActivity.java.

Screenshot

We’re going to use the mapView class we set up earlier to add a Mapbox map to our app. The app needs to know when to add the map, so we’ll do so when the activity is initialized with onCreate.

private MapView mapView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// Create a mapViewmapView = (MapView) findViewById(R.id.mainMapView);mapView.onCreate(savedInstanceState);}

Next, use your new mapView class to create a MapboxMap object. MapboxMap has lots of built-in methods that will allow you to apply styles, change the camera position, add markers, and more. Create your MapboxMap:

mapView.getMapAsync(new OnMapReadyCallback() {@Overridepublic void onMapReady(MapboxMap mapboxMap) {// Customize map with markers, polylines, etc.}});

Configure your mapView

Starting with version 4.0.0 of the Mapbox Android SDK, you can configure many of your map’s characteristics, including starting camera position, style URL, and access token, in your activity’s layout file. Add the following to your activity’s layout file, inside your com.mapbox.mapboxsdk.maps.MapViewtags:

mapbox:style_url="@string/style_mapbox_streets"
mapbox:center_latitude="41.885"
mapbox:center_longitude="-87.679"
mapbox:zoom="12"
mapbox:tilt="20"

When you’ve finished entering the above code, you will probably see some red warning text from Android Studio. This is because we haven’t yet imported some of the classes we’re referencing in MainActivity.java. You can automatically import these classes by pressing Alt + Enter (option + return on Mac). Alternatively, manually add the following to the top of your MainActivity.java file:

import android.app.Activity;import android.os.Bundle;import com.mapbox.mapboxsdk.camera.CameraPosition;import com.mapbox.mapboxsdk.constants.Style;import com.mapbox.mapboxsdk.geometry.LatLng;import com.mapbox.mapboxsdk.camera.CameraUpdateFactory;import com.mapbox.mapboxsdk.maps.MapView;import com.mapbox.mapboxsdk.maps.MapboxMap;import com.mapbox.mapboxsdk.maps.OnMapReadyCallback;

Next, we’ll handle the other types of events that might affect our map app:

@Overridepublic void onResume() {super.onResume();mapView.onResume();}@Overridepublic void onPause() {super.onPause();mapView.onPause();}@Overridepublic void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);mapView.onSaveInstanceState(outState);}@Overridepublic void onLowMemory() {super.onLowMemory();mapView.onLowMemory();}@Overrideprotected void onDestroy() {super.onDestroy();mapView.onDestroy();}

Click the Run ‘app’ button  to build your app. Android Studio will take a few seconds to build and if it finishes without errors, you’ll be able to test drive it in the AVD you set up earlier.

Changing the map style

The Mapbox Android SDK comes bundled with a handful of map styles, so let’s try changing it up a bit. You can find a list of the current bundled styles with the Mapbox SDK’s Style constant. Let’s use the LIGHT style (the version of Mapbox Light that conforms to the v8 release of the GL style specification).

Hint: Try typing mapboxMap.setStyleUrl(Style. and Android Studio will give you a list of available styles to choose from.

To set your map’s initial style to LIGHT, open your activity_main.xml layout file and set mapbox:style_urlto @string/style_light:

mapbox:style_url="@string/style_light"

You can also change your style programmatically using MapboxMap’s setStyleURL method. Inside onCreate(), change the line that sets mapboxMap’s style to:

mapboxMap.setStyleUrl(Style.LIGHT);

Creating your own GL styles

You can create your own custom GL styles with Mapbox Studio and and add them to your app. To add one of your custom styles to your mapboxMap, head to your styles page, copy your style’s style URL, then add it to your mapboxMap with setStyleURL():

mapboxMap.setStyleUrl("mapbox://styles/<your-account-name>/<your-style-ID>");

Using Mapbox Studio Classic styles and maps

Raster maps and styles created with Mapbox Studio Classic are not directly compatible with the Android SDK, though you can still load these maps via a custom GL style. Please note that associated markers, lines, and shapes are not supported.

Next steps

You just built a small Android app with Mapbox! You can now create an Android Studio project, install the Mapbox SDK, add a map, place a pin on it, and change the map style. Pat yourself on the back!

As you continue to develop your Mapbox app, we recommend that you read the following:

  • Attribution — comply with the licensing terms of the map data used in your application

We’ll be adding and updating guides to help you learn all of Mapbox’s amazing features as we continue to develop it. Here are a few resources to keep you up-to-date with Mapbox:

  • Mapbox Android SDK documentation
  • Mapbox GL Native on GitHub to follow the open source project behind Mapbox Mobile

这篇关于Android地图应用新视界--mapbox的应用开发之初始集成篇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1020446

相关文章

使用Go语言开发一个命令行文件管理工具

《使用Go语言开发一个命令行文件管理工具》这篇文章主要为大家详细介绍了如何使用Go语言开发一款命令行文件管理工具,支持批量重命名,删除,创建,移动文件,需要的小伙伴可以了解下... 目录一、工具功能一览二、核心代码解析1. 主程序结构2. 批量重命名3. 批量删除4. 创建文件/目录5. 批量移动三、如何安

Qt 中集成mqtt协议的使用方法

《Qt中集成mqtt协议的使用方法》文章介绍了如何在工程中引入qmqtt库,并通过声明一个单例类来暴露订阅到的主题数据,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一,引入qmqtt 库二,使用一,引入qmqtt 库我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台

Debezium 与 Apache Kafka 的集成方式步骤详解

《Debezium与ApacheKafka的集成方式步骤详解》本文详细介绍了如何将Debezium与ApacheKafka集成,包括集成概述、步骤、注意事项等,通过KafkaConnect,D... 目录一、集成概述二、集成步骤1. 准备 Kafka 环境2. 配置 Kafka Connect3. 安装 D

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

Android里面的Service种类以及启动方式

《Android里面的Service种类以及启动方式》Android中的Service分为前台服务和后台服务,前台服务需要亮身份牌并显示通知,后台服务则有启动方式选择,包括startService和b... 目录一句话总结:一、Service 的两种类型:1. 前台服务(必须亮身份牌)2. 后台服务(偷偷干

基于Python开发PPTX压缩工具

《基于Python开发PPTX压缩工具》在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,不便于传输和存储,所以本文将使用Python开发一个PPTX压缩工具,需要的可以了解下... 目录引言全部代码环境准备代码结构代码实现运行结果引言在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,

Android kotlin语言实现删除文件的解决方案

《Androidkotlin语言实现删除文件的解决方案》:本文主要介绍Androidkotlin语言实现删除文件的解决方案,在项目开发过程中,尤其是需要跨平台协作的项目,那么删除用户指定的文件的... 目录一、前言二、适用环境三、模板内容1.权限申请2.Activity中的模板一、前言在项目开发过程中,尤

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加

使用DeepSeek API 结合VSCode提升开发效率

《使用DeepSeekAPI结合VSCode提升开发效率》:本文主要介绍DeepSeekAPI与VisualStudioCode(VSCode)结合使用,以提升软件开发效率,具有一定的参考价值... 目录引言准备工作安装必要的 VSCode 扩展配置 DeepSeek API1. 创建 API 请求文件2.