下载官方Demo
Download and Install 官方Demo:
github.com/mapbox/mapb…, 下载后。导入到AS中,选择mapbox-maps-android 根目录下的 build.ktp 文件, 中设置好 password
配置 developer-config下的 mapbox_access_token.
Register Token
Register MAPBOX_DOWNLOADS_TOKEN
docs.mapbox.com/android/map… 官方引导页
account.mapbox.com/access-toke… 创建 token, 用于 Project的 build.kt, 新版Project setting.kt的gradle配置文件中使用,注意勾选 DOWNLOADS:READ 选项。
Android Studio 低于 Arctic Fox (2020.3.1) 并且 gradle 版本低于V6.0时,配置build.gradle 文件
allprojects {
repositories {
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 = project.properties['MAPBOX_DOWNLOADS_TOKEN'] ?: ""
}
}
}
}
复制代码
Android Studio Arctic Fox(2020.3.1) 并且gradle 版本高于V6.0时,配置setting.gradle文件
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 = MAPBOX_DOWNLOADS_TOKEN
}
}
}
}
复制代码
项目module里引入Mapbox jar 包
api "com.mapbox.maps:android:10.3.0"
复制代码
替换上以上注册的 MAPBOX_DOWNLOADS_TOKEN.
代码中注册使用 mapbox_access_token(我代码里沿用了10以前的key), V10.2及以上版本:
ResourceOptionsManager.getDefault(requireContext(), getString(R.string.mapbox_key)).update {
tileStoreUsageMode(TileStoreUsageMode.READ_ONLY)
}
复制代码
以下是官网给出来的Version 10 跟 Pre 10之间的包的区别
Package | pre-v10 | v10 |
---|---|---|
Maven group ID for map | com.mapbox.mapboxsdk |
com.mapbox.maps |
Maven artifact ID for map | mapbox-android-sdk |
android |
Maven group ID for plugins | com.mapbox.mapboxsdk |
com.mapbox.plugin |
Maven group ID for plugins | com.mapbox.mapboxsdk |
com.mapbox.extension |
Maven artifact ID for plugins | mapbox-android-plugin-PLUGINNAME |
maps-PLUGINNAME |
Package name for maps | com.mapbox.mapboxsdk.maps |
com.mapbox.maps |
MapView class in the layout |
com.mapbox.mapboxsdk.maps.MapView |
com.mapbox.maps.MapView |
Location相关的操作也不再需要单独引入 Plugin包了。
正常情况下MapView基本上可以用了。
MapView的生命周期方法缩减为 onStart(), onStop(), onLowMemory(), onDestory()
更多用法上的差异可参见官方的文档:
正常情况下,就可以创建Fragment加载显示 MapView了。
这里我在项目里遇到一个阻碍我蛮久的问题,最终在github demo代码里的issues里有找到了解答。
返回以下这个error:
java.lang.UnsatisfiedLinkError: No implementation found for void com.mapbox.maps.assets.AssetManagerProvider.initialize(android.content.res.AssetManager) (tried Java_com_mapbox_maps_assets_AssetManagerProvider_initialize and Java_com_mapbox_maps_assets_AssetManagerProvider_initialize__Landroid_content_res_AssetManager_2)
at com.mapbox.maps.assets.AssetManagerProvider.initialize(Native Method)
at com.mapbox.maps.MapController.<init>(MapController.kt:65)
at com.mapbox.maps.MapView.<init>(MapView.kt:101)
at com.mapbox.maps.MapView.<init>(MapView.kt:52)
at com.mapbox.maps.MapView.<init>(MapView.kt:52)
复制代码
最后找到元音是我们的App的Manifest.xml 文件里有 加入了
<!-- work manager -->
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
tools:node="remove" />
<!-- work manager -->
复制代码
Issues 中的给出的解决方案是在 自定义Application的 onCreate()方法里加入以下代码:
AppInitializer.getInstance(this)
.initializeComponent(MapboxMapsInitializer::class.java)
复制代码
支持升级到 V10的工作初步完成。
\